varのリスク(例)
801 ワード
勉強中にいい例を見たので持ってきました!
もちろん、
この問題を解決したのは
実行コンテキストでディレクトリ環境を個別に構成した後、
しかし、最も重要なのは
(どちらも関連しているように見えますが)
もちろん、
var
もhoisting
によって問題が発生します.この問題を解決したのは
let
とconst
である.実行コンテキストでディレクトリ環境を個別に構成した後、
initialize
を使用してTDZ
をブロックすることで、結果的に初期化がブロックされるため、安全です!しかし、最も重要なのは
var
の主な問題です.var
は関数レベルのスキャンで動作していることを忘れないでください.(どちらも関連しているように見えますが)
var score1 = 0;
let score2 = 200;
const defaultScore = 0;
function outer() {
// score은 함수 레벨 스코프이므로 다 접근 가능
if (true) {
var score = 0;
}
// i는 이미 함수 스코프 단위에서 존재하고 있음. 따라서 setTimeout가 실시된 0.1ms 이후에는 이미 처리가 완료되어 3이 3번 출력됨.
for (var i = 0; i < 3; i++) {
setTimeout(function() {
console.log(i);
}, 100);
}
console.log(score);
}
outer()
Reference
この問題について(varのリスク(例)), 我々は、より多くの情報をここで見つけました https://velog.io/@young_pallete/var의-위험성テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol