0

最初の1つ。これは機能し、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);
}

そして、これは機能しない2番目のものです。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);
    }

2 番目の変数はグローバル変数であり、プライベート変数ではありませんが、それでも機能するはずではありませんか? 機能するグローバル変数と機能しないグローバル変数があるのはなぜですか?

4

1 に答える 1

1

JavaScript では、関数は関数形式の変数です。したがって、2 番目のものでは、変数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);
 }
于 2013-07-27T06:56:57.233 に答える