原文地址:https://dev.to/bhagatparwinder/strict-mode-in-javascript-4ge4
ES5 中引入严格模式,它是一种在写 JS 代码时强制使用严格模式的方法,并不是所有的浏览器都支持严格模式,所以你需要为代码添加测试用例。
var
关键字"use strict"
。"use strict"
。1.没有使用 var
关键字声明的变量
someVariable = 17;
console.log(someVariable); // 17
这是一段合法的代码,即使我们没有使用 let
、var
或 const
去声明变量,JavaScript 中也不会有问题。这样会强制使 JS 创建一个全局的属性,同时在应用中这样会导致一些问题(变量冲突或更改了全局属性)。
严格模式会通过抛出错误来解决此问题。
const myObject = {
name: "Parwinder",
age: 34,
car: "MiniCoop",
name: "Bhagat"
}
console.log(myObject.name); // Bhagat
然而在非严格模式(松散模式)下是完全合法的,但在严格模式下会抛出错误。
"use strict"
delete Object.prototype; // throws a TypeError
function sumOfNumbers(a, a, b) {
return a + a + b;
}
console.log(sumOfNumbers(1, 2, 3)); // 7
上面的代码在非严格模式下也是合法的,但会导致一些意料之外的问题。2 赋值给 a
,但是结果返回的是 7 而不是预期的 6 。严格模式下将会报语法错误。
注意:没有办法取消“严格模式”:一旦进入严格模式下,没有办法把它关闭掉。