var, let, const
14381 ワード
宣言、割当、範囲
宣言
선언
箱var name;
let age;
const sex;
再宣言可能な唯一の
var
前述したように、変数を宣言し、再び宣言したのは
<script>
var name; // 선언하고
name = "NOHSANGWOO"; // 할당
console.log(name); // 사용하고
var name; // 재선언
// 나머지 let, const는 재선언이 불가능
</script>
わりあて
変数の値は
할당
です.var name = "NOHSANGWOO";
let age = 31;
const sex = "male";
var, let
再割り当て可能再割り当て
宣言された変数に値を再配置する
<script>
var name = "NOHSANGWOO";
let age = 31;
const sex = "male";
name = "KIMJONGRAN";
age = 59;
// const sex = "female"; // const는 값의 재할당이 불가능하다.
</script>
整理するvarは再宣言可能、再割り当て可能
let再宣言不可、再割り当て可能
constを再宣言できません.再割り当てできません.
スコープ(scope、有効スコープ)
<script>
function checkFunction(){
if(1){
var name = "NOHSANGWOO";
console.log(name); // NOHSANGWOO
}
console.log(name); // NOHSANGWOO (이게 되네?)
return 0;
}
checkFunction();
</script>
<script>
function checkFunction(){
if(1){
let name = "NOHSANGWOO";
console.log(name); // NOHSANGWOO
}
console.log(name); // Uncaught ReferenceError: age is not defined
return 0;
}
checkFunction();
</script>
varは関数レベルスキャン、letとconstはブロックレベルスキャンすなわち、
함수레벨 스코프는
関数で宣言されている場合、同じ関数のどこでも生きている.블록레벨 스코프
はこのブロック({})の中でしか生きていない.<script>
var global = 'global';
function foo() {
var local = 'local';
console.log(global); // global
console.log(local); // local
}
foo();
console.log(global); // global
console.log(local); // Uncaught ReferenceError: local is not defined
</script>
名前の通り、トップレベル(すなわちwindow)に直接宣言される変数Windowsサブ関数やブロックはどこでも使用できます.
<script>
if (true) {
var name = "NOHSANGWOO";
}
console.log(name); // NOHSANGWOO
</script>
varは関数レベルscopeですつまり、ブロック・レベルで宣言すると、ブロックが削除された後にブロックが宣言されたことになります.
ここで、ブロックの削除はグローバル変数になります
hoisting?
(何でもない)
<script>
function someFunc(){
console.log('hello');
var name = 'NOHSANGWOOO';
}
</script>
JavaScriptがこのコードを解釈すると、<script>
function someFunc(){
var name;
console.log('hello');
name = 'NOHSANGWOOO';
}
</script>
アーカイブ済み!! しかし、先に発表しただけで、一緒に分配するわけではありません.
<script>
function someFunc(){
console.log(name); // undefined
var name = 'NOHSANGWOOO';
}
</script>
Reference
この問題について(var, let, const), 我々は、より多くの情報をここで見つけました https://velog.io/@nohsangwoo/var-let-constテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol