javascript严格模式的影响

针对js严格模式会报错的编码操作进行了整理,避免不严谨的代码习惯,面向未来编程(es6+)

变量

1.定义八进制格式的数字
2.不带var的变量定义——包括函数体内的
3.对变量的delete操作——除非对象设置configurable为true

语句

1.使用with语句

对象

1.定义Object对象时,名字重复

函数

1.参数名相同
2.函数名.arguments,arguments.callee和arguments.caller调用
3.函数中带this字面量操作时

function A(){
   this.a=1;
}
A.call/apply(null)//报错--作用域对象不再自动转换为window,而是传什么是什么
A();//报错--this不再自动转换为window
eval方法

1.在包含上下文中不再创建变量或函数,只在被求值的特殊作用域中生效

function A(){
    eval("var x=10");//无效
    alert(x);//报错
}
var result = eval("var x=10, y=11; x+y");//有效
其他

1.应用保留字的误用
2.在if,else,for和switch中声明函数
3.违反Object.defineProperty配置的编码操作

强调

1.严格模式的"use strict";声明只能放在上下文第一句,否则无效
2.函传入的参数,实参和 arguments 的值会共享,当没有传入时,实参与 arguments 值不会共享
3.正常模式下,eval语句作用域,取决于它处于全局作用域,还是函数作用域;严格模式下,eval语句本身就是一个作用域,它的生成内容只能用于eval内部

posted @ 2018-10-23 08:49  戡玉  阅读(137)  评论(0编辑  收藏  举报