JavaScript严格模式与非严格模式之间的区别

来源:互联网 发布:前台数据传到msql乱码 编辑:程序博客网 时间:2024/06/05 15:16
严格模式 非严格模式 禁止使用with语句 允许使用with语句 所有变量要先声明 使用未声明的变量将隐式声明为全局变量 函数(非方法)中的thisundefined this是全局对象 call()apply()传入的第一个值不会被转换 call()apply()传入的第一个值如果是nullundefined,则会被全局对象取代,如果是原始值则转换为对应的包装对象 给只读属性和不可扩展的对象创建新成员将抛出类型错误异常 只是简单的操作失败 传入eval()的代码不能在定义变量和函数 变量和函数定义在eval()创建的新作用域中 函数中的arguments对象拥有传入函数值的静态副本 delete后跟非法标识符将抛出语法错误异常 只是简单的返回false delete删除不可配置的属性将抛出类型错误异常 只是简单的返回false 在对象直接量中定义多个同名属性将产生语法错误 不会报错 函数声明存在多个同名的参数将产生语法错误 不会报错 不允许使用八进制直接量 某些实现是允许的 evalarguments当作关键字,并且不允许更改 限制了对栈的检测能力,arguments.callerarguments.callee将抛出类型错误异常

测试是否开启严格模式

var hasStrictMode = function() {    "use strict";    return this === undefined}
0 0
原创粉丝点击