if (true) {
function test() {
console.log(true);
}
} else {
function test() {
console.log(false);
}
}
test()
Chrome 48(およびノード< 5.9.1)はfalseを記録し、chrome 49(およびfirefox)はtrueを記録します。私は彼らが偽のブランチから吊り上げないように最適化したと思うが、それは既存のアプリケーションを破る可能性がある。
仕様によって正しいのはどちらですか?クロム48と49の間で巻上げ動作が変更されましたか?
このように、Chrome 49では、このように関数を宣言するためのサポートが追加されています。このように書かれたコードは、以前のバージョンのChromeで意図したとおりに動作していない可能性があります。彼らは働いていたが、実際にはすでに壊れていた。 –