質問: 巻き上げた後のバーの値は?
var bar = function() {
return 3;
};
私が思う:関数式。私が間違っている?
質問: 巻き上げた後のバーの値は?
var bar = function() {
return 3;
};
私が思う:関数式。私が間違っている?
試してみませんか?
var bar = function() {
return 3;
};
console.log(bar);
出力、
function () {
return 3;
}
未定義の変数を使用しようとすると、もちろん参照エラーがスローされます。未定義の変数に割り当てようとすると、グローバル変数が作成されます (Web ページでは、書き込みとほぼ同じwindow.foo = bar;
です)。ただし、変数は作成されるまで未定義のままです。
const
ただし、 orを使用してローカル変数を宣言するvar
と、関数の最初から値を持つものとして定義されるundefined
ため、「早い段階で」変数にアクセスしても参照エラーはスローされず、それを設定するとローカル値が設定されます。関数の開始時に変数を宣言する必要はありません。宣言は関数のスコープに引き上げられます。
比較すると、ES6 では、 を使用して変数を宣言するlet
と、ブロックの先頭にのみ巻き上げられます。
また、 を使用して「変数」を宣言するfunction
と、その値も巻き上げられるため、宣言の前に関数を呼び出すことができます。(ただし、関数は同じスクリプト内にある必要があります。)
まさに機能。そうです、あなたは正しいです。