2016-04-08 7 views

答えて

0

ローカルスコープで変数を宣言します。

+0

なぜ定義されていませんか? – keenwon

+1

Damonが指摘しているように、それはその関数の引数変数 'a'を再宣言しているだけです。あなたの例では、 'var a'宣言は本当に効果がありません。 – RJM

1

RJMは、ローカルスコープ内の変数を宣言しています。より具体的には、あなたが持っているように見える混乱に、あなたはすぐに1を渡すことによって関数を呼び出すので、1を出力します。それは変数aに設定されます。 aの後にvar a;を呼び出すと、効果的に設定されません。

その文にもう少しコンテキストを与えるために、javascriptの変数宣言はスコープの先頭に持ち上げられます。 MDNにそれについての詳細を読む https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#var_hoisting

+0

varを使うと存在する変数を宣言すると、jsエンジンは何をしますか?ありがとう! – keenwon

0

VARは、関数のスコープ内に新しい変数を定義し、その後、aは関数コンテキスト外でアクセスすることはできません。

詳細については、Closureをご覧ください。

私はそれが役に立てば幸い:、あなたは自己実行匿名関数を提供するコードでD

0

実行されています。

(function(){ 
    //Code goes here 
})(); 

先行する括弧内で定義されたものはすべて直ちに実行されます。無名関数の外で定義された変数と関数は、内部で定義されたすべてに到達することはできません。

整数1を、自己実行型に渡します。これは、var aと定義されています。

(function (a) { 
    var a; 
    console.log(a); // why output 1? 
})(1) 
0

これは変数としてAを設定し、ブール値「true」として自動的に設定します。

関連する問題