JavaScript——理解严格模式

1,简单的理解严格模式:

使用严格模式比较简单,直接在代码的最顶端或者函数体的最顶端写上'use strict';如果是在代码的最顶端(全局环境下),那么严格模式将作用于整个全局环境下;若是某个函数体的最顶端,则作用于该函数体内;如若不是在最顶端,就算在某个位置有写上'use strict';也会不起作用。可以只是某个JS文件使用严格模式,也可只是某个函使用严格模式,可能这就是所谓严格模式的渐进式转变吧。使用严格模式的代码其实更容易让开发者接受,且一定程度上提高了性能。

//1, 放在全局环境的最顶端,受影响的是整个全局下的代码-----------
'use strict';
specialVariable ='test'; //使用未定义变量,在严格模式下会报错
//ReferenceError: specialVariable is not defined
function fn(){
    console.log(this.a); //严格模式下,直接被调用的函数的this指向undefined
}
fn();
//TypeError: Cannot read property 'a' of undefined

//2, 放在函数体的最顶端 -------------
specialVariable ='test'; //strict mode 放在函数体内,受影响的是函数体内的代码
function fn(){
    'use strict';
    nonFn();
    console.log(this.test);
//     innerFn();
//     function innerFn(){
//         console.log(this.test); //该函数内的代码也一定受影响
//     }
}
function nonFn(){
    console.log(this.test); //虽然在fn中调用此函数,但它不受严格模式的影响,this指向window
}
fn();
//输出:
//undefined
//TypeError: Cannot read property 'test' of undefined


//3, 'use strict'没放在代码最顶端,而是这样的放置,--------------
//不管是变量 specialVariableB 还是 specialVariable 都不受严格模式的影响
specialVariableB = 'test too';
'use strict';
specialVariable ='test';
//以上两个变量被正常定义以及赋值

//4,在函数体内也一样,若没放在代码最顶端,也会像例3那样不受严格模式的影响----------------
function fn(){
    console.log(this.test);
    'use strict';
    console.log(this.test);
}
fn();
//undefined
//undefined
//以上正常执行,非严格模式下,this指向window。

//因此不能耍酷,要把'use strict'放在代码最顶端-----------

 2,参考文档,想知道更多有关严格模式的信息或者严格模式做了哪些,可以阅读以下链接。

transition to strict mode

严格模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值