TIL(スキャン)
スコットランド?
変数に基づいてルールの有効範囲にアクセスします.
大かっこ(ブロック)で区切られたブロックスキャンと、関数に基づいてスキャンされた関数スキャンの2つのルールがあります.
第1条規則
内視鏡から外視鏡まではいけますが.
逆に(外のスキャンから中のスキャンまで)は不可能です.
第二条規則
顕微鏡は重なる
一番外側に位置するソコフは前駅のスコフで、他は前駅のスコフです.
ゾーンスキャンで宣言される変数はゾーン変数、グローバルスキャンで宣言される変数はグローバル変数です.
ゾーン変数はグローバル変数よりも優先度が高い
かんすうそういん
かんすうそういん
function getName(user) {
return user.name; //함수 선언식
}
let getAge = function (user) {
return user.age; //함수 표현식
}
関数宣言式と関数式(ビューなど)関数自体による関数スキャンの作成functionキーワードを使用する一般的な関数は関数scopeです
but!
let getAge = user => {
return user.age;
}
矢印関数はブロックスキャンとして扱われますvar , let , const
varキーワードとして定義された変数はブロックスキャンを無視し、関数スキャン
ex)
for (var i = 0; i < 5; i++) {
console.log(i); // 다섯번 반복
}
console.log('final i:' , i); // 5 , var를 쓰지않으면 참조오류가 발생
スキャンルールのため、外側スキャンから内側スキャンに近づくことができません.varキーを使用すると、ブロックスキャンでスキャンルールを無視できます.スキャン範囲を超えても使用できます.
letキーワード
letキーワード再宣言防止
constキーワード
constキーワード再宣言、再割り当て防止
let、const、varの違いは有効範囲にあります
ウィンドウオブジェクト
ブラウザにwindowオブジェクトが存在します
ブラウザ画面上のウィンドウを表すオブジェクトですが、グローバル領域は個別に含まれています.
だから.
関数宣言式関数を宣言したりvarを使用してグローバル変数を作成したりする場合は、windowオブジェクトで同じ値を検索できます.
var myName = '김코딩'
console.log(window.myName); // 김코딩 var로 선언한 변수가 window 객체안에 들어가있는것을 알 수 있다
function foo() {
console.log('bar')
}
console.log(foo === window.foo); // true 함수선언식으로 선언한 함수 foo 가 window 객체 안에 들어가
//foo와 window.foo는 같은 함수를 의미한다
キーワード宣言なしの変数
キーワードがない場合に変数(let、constなど)を割り当てると、varとして宣言されたグローバル変数とみなされます.
Strict Modeを使用すると、この構文エラーを回避できます.
「宣言されていない変数の割り当て」の場合、厳密モードもエラーと判断されます.
Strict Modeを適用するには、jsファイルの上部に「use strict」と入力するだけです.
'use strict';
function showAge() {
age = 90; // 키워드 없는 변수 선언으로 에러 발생
console.log(age); // age 변수가 정의되지않은 참조오류가 발생한다
}
showAge();
Reference
この問題について(TIL(スキャン)), 我々は、より多くの情報をここで見つけました https://velog.io/@ljy505541/스코프テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol