为什么第一个有效,第二个无效?全局和私有变量声明

Why does the first one work and the second one not work? Global and Private variable declaration

本文关键字:变量 声明 全局 有效 第一个 第二个 无效 为什么      更新时间:2023-09-26

第一个。这个有效,我有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);
    }

即使第二个是全局变量,而不是私有变量,它不应该仍然有效吗?为什么一些全局变量有效,而另一些则无效?

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