第二课:函数进阶(三):严格模式(2021/4/18)

严格模式在IE10以上版本的浏览器中才会被支持,l旧版本浏览器中会被忽略。严格模式对正常的JavaScript语义做了一些更改:

  • 1.消除了Javascript语法的一些不合理、不严谨之处,浓少了一些怪异行为。
  • 2.消除代码运行的一些不安全之处,保证代码运行的安全。
  • 3.提高编译器效率,增加运行速度。
  • 4.禁用了在ECMAScript的未来版本中可能会定义的一些语法,为未来新版本的Javascript做好铺垫。比如一些保留字如:class,
    enum, export, extends, import, super不能做变量名
'use strict';
// 此时只是给fn函数开启严格模式
function fn(){
        'use strict';
        // 下面的代码按照严格模式执行
}

function fun(){
        // 里面的还是按照普通模式执行
}
  1. 在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,变量都必须先用var命令声明,然后再使用。
'use strict';
num = 10;
console.log(num); // 报错
  1. 严禁删除已经声明变量。例如,delete x;语法是错误的。
'use strict';
var num = 10;
delete num; //报错
  1. 以前在全局作用域函数中的this指向window对象。严格模式下全局作用域中函数中的this是 undefined。
  2. 以前构造函数时不加new也可以调用,当普通函数,this指向全局对象。严格模式下,如果构造函数不加new调用,this会报错。
  3. 严格模式函数里面的参数不允许有重名的参数
  4. 不允许在非函数的代码块内声明函数
//严格模式下在非函数代码块里面声明函数会报错
'use strict';

for(var i = 0;i<10;i++){
        function() fn{}  //报错
        fn();
}

if(true){
        function() fn{}  //报错
        fn():
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值