JavaScriptで "var"とは何ですか?このコードの理解方法(javascript 'var'について)
(function (a) {
var a;
console.log(a); // why output 1?
})(1)
JavaScriptで "var"とは何ですか?このコードの理解方法(javascript 'var'について)
(function (a) {
var a;
console.log(a); // why output 1?
})(1)
ローカルスコープで変数を宣言します。
RJMは、ローカルスコープ内の変数を宣言しています。より具体的には、あなたが持っているように見える混乱に、あなたはすぐに1を渡すことによって関数を呼び出すので、1を出力します。それは変数a
に設定されます。 a
の後にvar a;
を呼び出すと、効果的に設定されません。
その文にもう少しコンテキストを与えるために、javascriptの変数宣言はスコープの先頭に持ち上げられます。 MDNにそれについての詳細を読む https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var#var_hoisting
varを使うと存在する変数を宣言すると、jsエンジンは何をしますか?ありがとう! – keenwon
VARは、関数のスコープ内に新しい変数を定義し、その後、a
は関数コンテキスト外でアクセスすることはできません。
詳細については、Closureをご覧ください。
私はそれが役に立てば幸い:、あなたは自己実行匿名関数を提供するコードでD
実行されています。
(function(){
//Code goes here
})();
先行する括弧内で定義されたものはすべて直ちに実行されます。無名関数の外で定義された変数と関数は、内部で定義されたすべてに到達することはできません。
整数1を、自己実行型に渡します。これは、var a
と定義されています。
(function (a) {
var a;
console.log(a); // why output 1?
})(1)
これは変数としてAを設定し、ブール値「true」として自動的に設定します。
なぜ定義されていませんか? – keenwon
Damonが指摘しているように、それはその関数の引数変数 'a'を再宣言しているだけです。あなたの例では、 'var a'宣言は本当に効果がありません。 – RJM