用变量进行判断

<button id="loginbtn">QQ登陆</button>
    <script type="text/javascript">
        var div=8;
          var createLoginLayer=(function(){
            var div;
            return function(){
                if(!div){
                   alert("div不存在");
                }
                //return div;
             }
        })();
        document.getElementById("loginbtn").onclick=function(){
            createLoginLayer();
         }
    </script>
    
   各位上午好,在if语句中要判断div是否存在,根据作用域的查找规则,如果在局部函数中没有该变量,
查询就会向上进行,而在全局变量中已经有了var div=8;为啥还会返回"div不存在"的提示框呢?谢谢!


阅读 2.4k
3 个回答

重新声明了div,没有赋值,相当于现在div为undefined。
题主所谓的"根据作用域的查找规则,如果在局部函数中没有该变量,查询就会向上进行",这里if判断时,已经找到了div(值为undefined),所以不会再往上查找。

然而你在上一层匿名闭包中申明了一个 div,其值为 undefined,因此此处访问到的是这个局部 div

因为你在函数内部作用域又定义了一个div变量啊。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题