js中申明变量需注意

作者: Beauty_Beast | 来源:发表于2018-06-20 22:23 被阅读14次

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

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

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


    非常出乎意料的结果

    再试试下边:

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

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

    举一隅不以三隅反?

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

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

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

    相关文章

      网友评论

        本文标题:js中申明变量需注意

        本文链接:https://www.haomeiwen.com/subject/qshfyftx.html