您的位置:首页 > Web前端 > JavaScript

JavaScript严格模式与非严格模式之间的区别

2017-08-30 00:45 176 查看
严格模式非严格模式
禁止使用with语句允许使用with语句
所有变量要先声明使用未声明的变量将隐式声明为全局变量
函数(非方法)中的
this
undefined
this
是全局对象
call()
apply()
传入的第一个值不会被转换
call()
apply()
传入的第一个值如果是
null
undefined
,则会被全局对象取代,如果是原始值则转换为对应的包装对象
给只读属性和不可扩展的对象创建新成员将抛出类型错误异常只是简单的操作失败
传入
eval()
的代码不能在定义变量和函数
变量和函数定义在
eval()
创建的新作用域中
函数中的
arguments
对象拥有传入函数值的静态副本
 
delete
后跟非法标识符将抛出语法错误异常
只是简单的返回
false
delete
删除不可配置的属性将抛出类型错误异常
只是简单的返回
false
在对象直接量中定义多个同名属性将产生语法错误不会报错
函数声明存在多个同名的参数将产生语法错误不会报错
不允许使用八进制直接量某些实现是允许的
eval
arguments
当作关键字,并且不允许更改
 
限制了对栈的检测能力,
arguments.caller
arguments.callee
将抛出类型错误异常
 

测试是否开启严格模式

var hasStrictMode = function() {
"use strict";
return this === undefined
}

转载来自:http://blog.csdn.net/abyss521/article/details/52389650
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 对象