JavaScript的strict模式

use strict;


strict模式是ECMAScript 5语言的一个受限子集,它修正了语言的重要缺陷,并提供健壮的查错功能和增强的安全机制。

严格模式与非严格模式之间的区别如下:

  • 在严格模式中禁止使用with语句。
  • 在严格模式中,所有变量都要先声明,如果给一个未声明的变量、函数、函数参数、catch从句参数或全局对象属性赋值,将会抛出一个异常。而在非严格模式中(这种隐式的声明的全局变量的方法是给全局对象新添一个新属性。
  • 在严格模式中,调用的函数(不是方法)中的一个this值是undefined。(在非严格模式中,调用函数中的this值总是全局对象)。可以利用这种特性来判断JavaScript实现是否支持严格模式:
var hasStrictMode = (function () {"use strict;" return this == undefined}());

  • 同样,在严格模式中,当通过call()或apply()来调用函数时,其中的this值就是通过call()或apply()传入的第一个参数。(在非严格模式中,null和undefined值是被当做全局对象和转换对象的非对象值所代替)
  • 在严格模式中,给只读属性赋值和给不可扩展的对象创建新成员都将抛出一个类型错误异常。(在非严格模式中,这些操作只是简单地操作失败,不会报错)
  • 在严

你可能感兴趣的:(JavaScript)