ES5严格模式下有哪些新规定

如何启用严格模式:在js运行顶端加上 “use strict” 注意是字符串

1.禁止给未声明的变量赋值

js 如果给未声明的变量会自动把这个变量加载到全局作用域下,这样导致的后果 造成全局污染 在严格模式下会报错禁止给未声明的变量强行赋值,报错: xxx is not defined。——防止全局污染,也减少了拼写错误导致的误会

2.静默失败升级为错误

什么叫静默失败 就是有错误也不会报错,但是在严格模式下会报错便于我们快速发现问题

3.普通函数中this的指向问题

一般来说调用一个函数 如果函数体内出现 this.a 代码执行到这里的时候this的指向问题 this 指的是window 例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
      <script>
      
         (function(){
             this.a=5;
             console.log(a)
         })()// **首先匿名函数自调用执行函数里面的代码 执行到this.a 因为在当前的临时作用域对象没有a  因为this.a 是相当于在全局添加了一个a d但是在严格模式下会报错**
        
      </script>
</body>
</html>

4. 禁用了arguments.callee 属性

function f(n){
  if(n<3){
    return 1;
  }else{
    return arguments.callee(n-1)+arguments.callee(n-2);
  }//   arguments.callee 代表的是函数名  一般用在递归中 为什么禁用 因为递归算法不好 重复量太大
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值