js中申明變量需注意
標簽:
JavaScript
申明:本文是js系列笔记之一,有不正确的地方请尽管指出,大家相互学习,共同进步;
js语言分严格模式strict与非严格模式,
问题产生:在非严格模式下, 如果某个变量被初始化,而没有事先声明;那么该变量会自动被添加到全局作用域中;看下边的现象:
非常出乎意料的结果
再试试下边:
和上边比较下,觉得有点意思了
想想为什么会这样:再试试下边
举一隅不以三隅反?
看到这里相信大家都明白了,开始所述,必须有一个前提,那么就是方法被调用过,或者该变量被使用过,为什么会这样,我猜测大概是这样得方法在未被调用之时,只是声明了,方法内部,js线程是不去管的,只有在被调用时,线程执行到方法中,该变量被使用,才会被js添加到全局作用域中;
前边提到了,严格模式;上边所说的结果都是在非严格模式下才会出现的结果,在严格模式下,没有被申明的变量,突然冒出来,会直接暴出 未被定义的error;顺便说下,严格模式下,js不让使用with语句的,,这也证明了我在前边对with的理解,js本身都不建议使用with语句;
js有太多的灵活性与不确定性,这也导致了其 缺陷;
作者:XBGG
链接:https://www.jianshu.com/p/a2e207060fd4
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優質文章
正在加載中
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦