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 contextfunction 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;
本文为头条号作者发布,不代表今日头条立场。