5

こんにちは、私は Javascript を初めて使用します。Oreilly の Javascript 決定版ガイドを読んでいます。宣言文のセクションでは、次のように述べています。

ここに画像の説明を入力

簡単なテストを行いました:

var a = 1;
while(a < 5){
    a++;
    function double(a){return a * 2 };
    console.log(double(a));
}    

node.js でエラーが発生せず、期待どおりに実行されているようです。これについて何かコメントはありますか?

4

1 に答える 1

-1

それは真実ではない。ただし、期待どおりに動作しない可能性があることに注意してください。

たとえば、これは機能します:

if( false) {
    function double(a) {return a*2;};
}
else {
    console.log(double(4));
}

決して到達しない内にあるために関数が定義されていないと思うかもしれませんがif、関数は実際には現在の「ブロック」(それが含まれている関数または<script>タグまたはファイル全体)の先頭に持ち上げられており、したがって、どこからでもアクセスできます。

ブロック内に定義を入れるべきではありませんが、そうできない理由はありません。functionif

于 2013-03-02T00:16:10.690 に答える