首页 > 代码库 > JS 严格模式
JS 严格模式
use strict是ECMAscript5的特性,不建议在全局使用use strict,因为当压缩不同文件时候,一个文件使用了use strict,一个没有使用,没有使用use strict的文件就会报错
1.作用
消除js语法不合理、不严谨、不安全的问题;提高编译器效率,增加运行速度
2.支持的浏览器
IE10+,Firefox4+,safari12+,opera12+,chrome
3.规则
变量:
不允许创建全局变量 eg: name = "bella";
不能对变量进行delete操作 eg: var name = "bella"; delete name;
对象:
不能为只读属性赋值:
ECMAscript5出现了Object.definePropotype方法改变了javascript语言中所有object是Public的这一说法;
Object.definePropotype(obj,prop,descriptor):需要添加或修改的对象,属性名称,属性描述;
var person = {name:"bella",sex:"female"};Object.definePropotype(person ,"name",{value:"alias",writable:false})
不能为不可配置的属性使用delete操作
不可配置也是通过Object.definePropotype来设置的
var person = {name:"bella",sex:"female"};Object.definePropotype(person ,"name",{configurable:false})
函数:
参数必须唯一 eg: function(a,a){}
修改形参不会影响arguments eg:funtion(arg1){ arg1 = "bella";} 非严格模式下arguments[0]:bella,arguments被修改了
不允许使用arguments.callee 和 arguments.caller
不允许eval()在包含上下文中创建变量或函数
一般都很少用eval,因为eval会将字符串当做js代码来执行,会改变上下文 eg:eval("var x = 10"); alert(x)这样是不允许的
不允许this为null 或 undefined
不允许使用with语句
不允许使用八进制字面量
JS 严格模式