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キーワード
    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();