为什么第一个工作而第二个不工作?全局和私人变量声明

时间:2013-07-27 06:50:25

标签: javascript global-variables

第一个。这个工作,我有var start = new Date();在函数内部。

function instance(){
    var start = new Date();
    document.getElementById("foo").innerHTML = start.getTime();
    window.setTimeout(instance, 1000);
}
function start(){
window.setTimeout(instance, 1000);
}

这是第二个不起作用的。 var start = new Date()在函数之外。

 var start = new Date();
 function instance(){
    document.getElementById("foo").innerHTML = start.getTime();
    window.setTimeout(instance, 1000);
    }
    function start(){
    window.setTimeout(instance, 1000);
    }

即使第二个是全局变量而不是私有变量,它不应该仍然有效吗?为什么有些全局变量可以工作而有些则不然呢?

1 个答案:

答案 0 :(得分:1)

在javascript中,函数是变量,只是函数形式。因此,在第二个中,变量start和函数start发生冲突。例如,如果您要将function start(){更改为function init(){,则可以使用。

这是允许您定义

等功能的原因
var foo = function() {
  ...
}

第一个有效,因为你有一个局部变量start和一个全局函数start,导致没有冲突。

 var start = new Date();
 function instance(){
   document.getElementById("foo").innerHTML = start.getTime();
   window.setTimeout(instance, 1000);
 }
 function init(){
   window.setTimeout(instance, 1000);
 }