美文网首页
严格模式

严格模式

作者: pipu | 来源:发表于2020-01-07 18:43 被阅读0次

严格模式是爱es5中新增的特性

严格模式通过几方面来提供帮助:

  • 捕获一些常见的代码错误,抛出异常
  • 阻止或抛出错误,当“不安全”相关的的指令执行(如获取全局对象的访问权限)
  • 禁用一些令人困惑和不好的特性

开启方式:

  • 全局 "use strict"
  • 在函数作用域
function imStrict(){
  "use strict";
  // ...code ...
}
具体的一些变化
变量和属性

变量必须被定义,否则抛出异常。原来直接给为定义的变量赋值了
可写特性为false的属性不能被写入。新增的特性控制,在某一个特性被设定为false情况下不可写,不可配置,不可枚举的时候,操作会抛出错误
用delete 操作符删除变量 函数 函数参数
在字面方式创建对象时,相同属性定义超过一次的时候报错

eval

所有视图使用“eval”会报错,类似保留字?

// 报错 Uncaught SyntaxError: Unexpected eval or arguments in strict mode
obj.eval = ...
obj.foo = eval;
var eval = ...;
for ( var eval in ... ) {}
function eval(){}
function test(eval){}
function(eval){}
new Function("eval")

另外,通过eval获取的新的变量会被控制在其作用域内

eval("var a = false;");
print( typeof a ); // undefined

Functions

给arguments赋值会报错
参数名相同报错
获取arguments.caller和arguments.calee抛出异常

Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

其他函数的arguments和calller属性不在存在

function test(){
  function inner(){
    // Don't exist, either
    test.arguments = ...; // Error
    inner.caller = ...; // Error
  }
}

最后,下面这种情况被修复,null和undefined会被强制转为全局对象,严格模式下回抛出异常

(function () {
    "use strict";
    (function () {
        console.log(this.a)
    }).call(null); // Exception
 // Uncaught TypeError: Cannot read property 'a' of null
})()
with

禁用with

相关文章

  • 面向对象-严格模式、作用域

    严格模式 js有两中开发模式:非严格模式(默认)+严格模式(“ues strict”) 严格模式:会进行更严格的代...

  • JavaScript this

    全局下this 非严格模式/严格模式 window 函数内this 非严格模式 window 严格模式 undef...

  • 开发中的严格模式

    js中有严格模式和非严格模式两种运行环境 在开发中,有非严格模式和严格模式2种开发模式 在严格模式下,会做更加严格...

  • 严格模式和非严格模式

    es6添加了严格模式("use strict")主要作用: 1.严格模式通过抛出错误来消除一些原有的静默错误。 2...

  • JS基本类型和变量

    严格模式 ECMAScripr5引入了严格模式。启用严格模式可以在顶部添加: “use strict” 严格模式下...

  • 严格模式

    ECMScript 5引入严格模式(strict mode)。严格模式定义了一种不同的解析与执行模型,ES3中的不...

  • 严格模式

    概览 严格模式的 目的:使代码更加 安全和 易于优化,代表了这门语言未来的发展方向。我们应该在代码中一直使用。 内...

  • 严格模式

    除了正常的运行模式,JavaScript还有第二种运行模式:“严格模式”(strict mode)。顾名思义,这种...

  • 严格模式this

    在严格模式下,在全局作用域中,this指向window对象(和非严格模式一致) 对象的函数中的this指向调用函数...

  • 严格模式

    JS的严格模式: 定义和优点:严格模式是一种特殊的执行模式,它修复了部分语言上的不足(禁用with),提供了更强的...

网友评论

      本文标题:严格模式

      本文链接:https://www.haomeiwen.com/subject/atddactx.html