2013-07-27 43 views
0

第一个。这一个工程,我有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

在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); 
} 
+0

哦,我看到了谢谢! – darrendev

相关问题