Variable Types



かへん


Global Variable


グローバル変数として、宣言からRuntimeが終了するまでメモリの使用を開始します.

Local Variable


地域変数としては、{}の内部に存在し、{}以外では地域変数を読み取ることができない.

Block scope


利用可能範囲を中価格{}で指定{}で宣言された変数は外部では使用できません.

Var


Var Hoisting


変数はどこで宣言されても、常に上部に引き寄せられます.
コードに変数が宣言されない前にデータを割り当てることができます.(メモリ管理X)
吊り下げのため、ブロック範囲が作動しません.すなわち、{}内で変数を宣言しても、グローバルに使用することができる.(メモリの無駄)

Let


letを使用する場合は、変数にデータを割り当てるには変数を宣言する必要があります.
他の言語と同様に、宣言後にデータを変更することができます.(Mutable)

Constants


メモリに宣言して割り当てると、データは変更できません.(Immutable)
セキュリティにより、複数のスレッドが変数データの変更にアクセスし、コラボレーション時にコードエラーを防止します.

Variable Types


Primitive


Single item
ex) number, string, boolean, null, undefiedn, symbol

Object


Primitive typeを組み合わせてbox単位で管理します.

Function


関数は、データ型の1つとしても使用されます.(first-class function)
変数に割り当てることができ、パラメータとして渡すことができ、関数として返すことができます.

Number


c、javaなどの言語では、データのサイズに応じてメモリ割り当てのサイズを区別して変数(short、int、long、float、double...)を宣言する必要があります.
JavaScriptでは、データのサイズに応じてメモリが動的に割り当てられます.

Infinity | NegativeInfinity | NaN

const infinity = 1 / 0;
const negativeInfinity = -1 / 0;
const nAn = 'not a number' / 2;
console.log(infinity); // Infinity
console.log(negativeInfinity); // -Infinity
console.log(nAn); // NaN

String


番号と同様に、動的な割り当てです.

template literals

  • 2${}を用いて変数内の値を出力することができる.
  • const brendan = 'brendan';
    const helloBob = `hi ${brendan}!`;
    console.log(`value : ${helloBob}, type : ${typeof helloBob}`);
    // value : hi brendan!, type : string

    Boolean


    False


    0, null, undefined, NaN, ''

    True


    False要素以外のすべてのコンテンツ

    Null | Undefined


    Null


    空価

    Undefined


    空っぽである

    Symbol


    指定された文字列が何であるかにかかわらず、一意の識別子が必要な場合に使用されます.
    const symbol1 = Symbol('id');
    const symbol2 = Symbol('id');
    console.log(symbol1 === symbol2); // False
    
    const symbol1 = Symbol.for('id');
    const symbol2 = Symbol.for('id');
    console.log(symbol1 === symbol2); // True

    Object

    const ellie = { name : 'ellie', age : 20 };
    

    ellie boxは変更できませんが、ellieが指す名前と年齢は変更できます.

    Dynamic typing : dynamically typed language


    変数を宣言するときはタイプを設定せず、プログラムの実行時に割り当てられた値に基づいてタイプを決定します.
    let text = 'hello';
    console.log(text.charAt(0)); // h 출력
    console.log(`value : ${text}, type : ${typeof text}`);
    text = 1;
    console.log(`value : ${text}, type : ${typeof text}`);
    text = '7' + 5;
    console.log(`value : ${text}, type : ${typeof text}`); // 75 -> 5를 string으로 변환 후 합침
    text = '8' / '2';
    console.log(`value : ${text}, type : ${typeof text}`); // 4 -> string 8, 2를 number로 변환 후 계산
    console.log(text.charAt(0)); // error -> runtime 중 type이 number로 바뀌면서 error 출력