1. 程式人生 > >js中局部變量和全局變量的易混點

js中局部變量和全局變量的易混點

write bsp 顯示 作用域 ati cti 原因 -s 上下

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.

js中局部變量和全局變量的易混點