为了账号安全,请及时绑定邮箱和手机立即绑定

js中申明变量需注意

标签:
JavaScript

申明:本文是js系列笔记之一,有不正确的地方请尽管指出,大家相互学习,共同进步;

js语言分严格模式strict与非严格模式,

问题产生:在非严格模式下, 如果某个变量被初始化,而没有事先声明;那么该变量会自动被添加到全局作用域中;看下边的现象:

webp


非常出乎意料的结果

再试试下边:

webp

和上边比较下,觉得有点意思了

想想为什么会这样:再试试下边

webp

举一隅不以三隅反?

看到这里相信大家都明白了,开始所述,必须有一个前提,那么就是方法被调用过,或者该变量被使用过,为什么会这样,我猜测大概是这样得方法在未被调用之时,只是声明了,方法内部,js线程是不去管的,只有在被调用时,线程执行到方法中,该变量被使用,才会被js添加到全局作用域中;

前边提到了,严格模式;上边所说的结果都是在非严格模式下才会出现的结果,在严格模式下,没有被申明的变量,突然冒出来,会直接暴出 未被定义的error;顺便说下,严格模式下,js不让使用with语句的,,这也证明了我在前边对with的理解,js本身都不建议使用with语句;

webp

js有太多的灵活性与不确定性,这也导致了其 缺陷;



作者:XBGG
链接:https://www.jianshu.com/p/a2e207060fd4


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消