1. 概念
1. 语法变得更加严格
2. 如何开启严格模式
1. "use strict"
3. 常规的限制
1. 不能使用未使用var声明的变量
2. 不能使用重复的参数名称!!!
3. 之前是在严格模式下不能有重复的属性名称,但是后来更新后,是允许这么做了!
4. 严格模式不能使用8进制的常量
5. 在严格模式下,eval中有自己的单独的作用域!!
4. 代码详解
// 1.不能使用未使用var声明的变量 a = 10; //a is not defined(…) console.log(a); //2.不能使用重复的参数名称!!! //Duplicate parameter name not allowed in this context function test(a,a){}; test; //3.之前是在严格模式下不能有重复的属性名称,但是后来更新后,是允许这么做了! var obj = { name : 'waxun', name : 'kaguo' }; //Object {name: "kaguo"} console.log(obj); //4.严格模式不能使用8进制的常量// Octal literals are not allowed in strict mode. var b = 010; console.log(b); //5. 在严格模式下,eval中有自己的单独的作用域!! //注意: 不开启严格模式外面是可以访问到eval里面得的变量 eval('var a = 10;'); //a is not defined(…) console.log(a); //property 'prototype' of function Object { [native code] }(…) //在非严格模式下,也不可以被删除,但是不会报错 delete Object.prototype;
本文为头条号作者发布,不代表今日头条立场。