美文网首页
JS-严格模式

JS-严格模式

作者: 居客侠 | 来源:发表于2017-11-10 13:09 被阅读10次

严格模式对正常的Javacript语义做了一些更改:
1.严格模式消除了一些 JavaScript的静默错误,通过改变它们来抛出错误。
2.严格的模式修复了 JavaScript引擎难以执行优化的错误:有时候,严格模式代码可以比非严格模式的相同的代码运行得更快。
3.严格模式禁用了在ECMAScript的未来版本中可能会定义的一些语法。

行为

使拼写错转为异常

1.无法再意外创建全局变量

2.引起静默失败

// 给不可写属性赋值
var obj1 = {};
Object.defineProperty(obj1, "x", { value: 42, writable: false });
obj1.x = 9; // 抛出TypeError错误
// 给只读属性赋值
// 给不可扩展对象的新属性赋值 

3.试图删除不可删除的属性时会抛出异常

4.不允许同名属性

5.函数参数名唯一

6.禁止八进制数字语法

7.禁止设置primitive值的属性

(function() {
"use strict";
false.true = "";              //TypeError
(14).sailing = "home";        //TypeError
"with".you = "far away";      //TypeError
})();

简化变量的使用

8.禁用with

9.禁止删除声明变量

"use strict";

var x;
delete x; // !!! 语法错误

eval("var y; delete y;"); // !!! 语法错误

让eval和arguments变的简单

10.名称 eval 和 arguments 不能通过程序语法被绑定(be bound)或赋值

11.参数的值不会随 arguments 对象的值的改变而变化

12.不再支持 arguments.callee

为未来的ECMAScript版本铺平道路

13.一部分字符变成了保留的关键字

14.禁止了不在脚本或者函数层面上的函数声明

"use strict";
if (true){
  function f() { } // !!! 语法错误
  f();
}

for (var i = 0; i < 5; i++){
  function f2() { } // !!! 语法错误
  f2();
}

function baz() { // 合法
  function eit() { } // 同样合法
}

相关文章

  • JS-严格模式

    严格模式对正常的Javacript语义做了一些更改:1.严格模式消除了一些 JavaScript的静默错误,通过改...

  • JS-严格模式

    参考文章:严格模式 1.设计目的 早期的 JavaScript 语言有很多设计不合理的地方,但是为了兼容以前的代码...

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

    严格模式 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)。顾名思义,这种...

网友评论

      本文标题:JS-严格模式

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