js中局部变量和全局变量的易混点

1.以下输出的是:

undefined
局部变量

<script type="application/javascript">
  var scope="全局变量";
  function cal(){
    document.writeln(scope+"<br />");
    var scope="局部变量";                                //(1)处
    document.writeln(scope+"<br />");
  }
  cal();
</script>

2.以上不好理解的话,把函数中的scope改为scope1,则易理解。

原因:函数中的变量为局部变量,整个作用域是函数内。这里主要是定义变量用var和不用var的区别。

即:1)如果使用var,则程序会强制定义一个新变量

  2)如果不使用,则系统会优先在当前上下文(不仅是上文,还有下文)中搜索是否存在该变量。只有当该变量不存在时,系统才会重新定义。

所以1中搜索到了下文定义的scope,但在(1)处并未赋值,故显示undefined.

原文地址:https://www.cnblogs.com/yyzyxy/p/7198653.html