首页 > 代码库 > 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 严格模式