Js中严格模式和非严格模式的区别

严格模式和非严格模式的区别

//f1.js
'use strice'; //整个js文件都是严格模式下执行的

var n = 1;
var foo = function(){...};
//...
var n = 1;
var foo = function(){
    'use strict';
    //在foo函数内是严格模式
    //some code...
}
  1. 严格模式下, delete运算符后跟随非法标识符(即delete 不存在的标识符),会抛出语法错误; 非严格模式下,会静默失败并返回false
  2. 严格模式中,对象直接量中定义同名属性会抛出语法错误; 非严格模式不会报错
  3. 严格模式中,函数形参存在同名的,抛出错误; 非严格模式不会
  4. 严格模式不允许八进制整数直接量(如:023)
  5. 严格模式中,arguments对象是传入函数内实参列表的静态副本;非严格模式下,arguments对象里的元素和对应的实参是指向同一个值的引用
  6. 严格模式中 eval和arguments当做关键字,它们不能被赋值和用作变量声明
  7. 严格模式会限制对调用栈的检测能力,访问arguments.callee.caller会抛出异常
  8. 严格模式 变量必须先声明,直接给变量赋值,不会隐式创建全局变量,不能用with,
  9. 严格模式中 call apply传入null undefined保持原样不被转换为window
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值