We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
严格模式的概念,是从ECMAScript5引入的,通过严格模式,可以在函数内部选择进行较为严格的全局或局部的错误条件检测。
使用严格模式的好处是可以提早知道代码中存在的错误,及时捕获一些可能导致编程错误的 ECMAScript 行为。
支持严格模式的浏览器包括 IE10+、Firefox 4+、Safari 5.1+和 Chrome。
使用严格模式的编译指示(pragma):"use strict" 可以告诉引擎在当前作用域中进行严格模式。
比如在文件顶部开启严格模式,则由于es6中一个文件就是一个模块,具有自己的作用域,所以在整个模块的作用域中都将采用严格模式,再比如在全局作用域中编写,则会对全局都生效。甚至可以在一个函数中打开严格模式,就像下面这样:
function test(){ "use strict"; // ...... }
严格模式下:
在非严格模式下使用函数的 apply()或 call()方法时,null 或 undefined 值会被转换为全局对象。
在严格模式下,函数的 this 值始终是指定的值,无论指定的是什么值。例如:
//访问属性 //非严格模式:访问全局属性 //严格模式:抛出错误,因为 this 的值为 null var color = "red"; function displayColor(){ alert(this.color); } displayColor.call(null);
以上代码向displayColor.call()中传入了null, 如果在是非严格模式下,这意味着函数的this值是全局对象。结果就是弹出对话框显示"red"。 而在严格模式下,这个函数的 this 的值是 null,因此在访问 null 的属性时就会抛出错误。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
严格模式的概念,是从ECMAScript5引入的,通过严格模式,可以在函数内部选择进行较为严格的全局或局部的错误条件检测。
使用严格模式的好处是可以提早知道代码中存在的错误,及时捕获一些可能导致编程错误的 ECMAScript 行为。
如何使用严格模式
使用严格模式的编译指示(pragma):"use strict" 可以告诉引擎在当前作用域中进行严格模式。
比如在文件顶部开启严格模式,则由于es6中一个文件就是一个模块,具有自己的作用域,所以在整个模块的作用域中都将采用严格模式,再比如在全局作用域中编写,则会对全局都生效。甚至可以在一个函数中打开严格模式,就像下面这样:
严格模式和非严格模式的区别
变量
严格模式下:
对象
严格模式下:
函数
严格模式下:
this
在非严格模式下使用函数的 apply()或 call()方法时,null 或 undefined 值会被转换为全局对象。
在严格模式下,函数的 this 值始终是指定的值,无论指定的是什么值。例如:
以上代码向displayColor.call()中传入了null,
如果在是非严格模式下,这意味着函数的this值是全局对象。结果就是弹出对话框显示"red"。
而在严格模式下,这个函数的 this 的值是 null,因此在访问 null 的属性时就会抛出错误。
The text was updated successfully, but these errors were encountered: