diveDylan / blog

My blog, detail is in the issues list
2 stars 0 forks source link

`strict`模式 #60

Open diveDylan opened 4 years ago

diveDylan commented 4 years ago

strict mode

ECMAScript 5的严格模式是采用具有限制性JavaScript变体的一种方式,从而使代码显示地 脱离“马虎模式/稀松模式/懒散模式“(sloppy)模式。

feature

严格模式通过抛出错误来消除了一些原有静默错误。 严格模式修复了一些导致 JavaScript引擎难以执行优化的缺陷:有时候,相同的代码,严格模式可以比非严格模式下运行得更快。 严格模式禁用了在ECMAScript的未来版本中可能会定义的一些语法。

usage

// 全局以及整个脚步开启 strict mode
"use strict";
// or
'use strict';

// 局部作用域开启 "use strict"
function withStrict() {
    "use strict";
   // or 
    "use strict";
}

difference

不带关键字的声明全局变量会报错

"use strict"
globalDefine = 1 // ReferenceError

静默失败的赋值操作报错

给不可写属性赋值, 给只读属性(getter-only)赋值, 给不可扩展对象(non-extensible object)的新属性赋值