您的位置:首页 > Web前端 > JavaScript

use strict (js中的严格模式)

2018-01-21 09:54 288 查看
use strict 是ES5引入的一条指令

它只能出现在脚本代码的开始或函数体的开始,任何实体语句之前,但它不一定出现在脚本的首行或函数内的首行,

因为"use strict "指令之后或之前都可能有其他字符串直接量表达式,并且Javascript的具体实现可能将它们解析为解释器自有的指令

使用"use strict "指令的目的是说明后续代码将会解析成严格代码,

如果顶层代码使用了"use strict "那么它们就是严格代码

如果函数体定义所处的代码是严格代码或者函数体使用了"use strict "指令,那么函数体的代码也是严格代码

在严格模式中禁止使用with语句

在严格模式中,所有的变量都要先声明,如果给一个未声明的变量,函数,函数参数或全局对象属性赋值,将会抛出一个引用错误异常

(在非严格模式中,,这种隐式声明的全局变量的方法是给全局对象添加一个新属性)

在严格模式中,调用的函数(不是方法)中的一个this值是undefined (在非严格模式下,调用的函数中的this值总是全局对象)

在严格模式中,当通过call()后apply()来调用函数时,其中this值就是通过call()或apply()传入的第一个参数(在非严格模式中,null和undefined值被全局对象和转换为对象的非对象值所替代)

在严格模式中,给只读属性赋值和给不可扩展的对象创建新成员都将抛出一个类型错误异常(在非严格模式中,这些操作只是简单的操作失败,不会报错)

在严格模式中,函数中的arguments对象拥有传入函数值的静态副本,在非严格模式中,arguments里的数组元素和函数参数都是指向同一个值的引用

在严格模式中,当delete运算符后跟随非法标识符,会抛出语法错误异常

在严格模式中试图删除一个不可配置的属性将抛出一个类型错误异常

在严格模式中,在一个对象直接量中定义两个或多个同名属性将会产生一个语法错误

在严格模式中,函数声明中存在两个或多个同名的参数将会产生一个语法错误(在非严格模式中不会报错)

在严格模式中是不允许使用八进制整数直接量

在严格模式中,限制了对调用栈的检测能力,在严格模式的函数中,arguments.caller和arguments.callee都会抛出一个类型异常错误. 严格模式的函数同样具有caller和arguments属性,当访问则两个属性时将会抛出类型错误异常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: