[JS] 6. データ型

8181 ワード

JavaScriptのすべての値にデータ型があります
JavaScript(ES 6)は7種類のデータ型を提供し、7種類のデータ型は元のタイプとオブジェクトタイプに分けられる.
출처: https://holabee.medium.com/javascript-데이터-타입-data-type-76eaa06874f0

6.1数値タイプ


CまたはJavaとは異なり、JavaScriptには数値タイプが1つしかありません
すべての数値を誤って処理し、整数を表すデータ型は存在しません.
整数で区切られた数値はエラーを引き起こす可能性があります
数値タイプは、3つの特殊な値を表すこともできます.
  • 無限:正の無限大
  • -無限:音の無限大
  • Nan:算術演算不可
  • console.log(10 / 0) // Infinity
    console.log(10 / -0) // -Infinity
    console.log(1 * String) // Nan
    JavaScriptでは大文字と小文字が区別されるため、NANをNAN、NAN、NANと表すとエラーが発生します.

    6.2文字列タイプ


    文字列タイプテキストデータを表す
    // 문자열 타입
    var string;
    string = '문자열'; // 작은따옴표
    string = "문자열"; // 큰따옴표
    string = `문자열`; // 백틱(ES6)
    string = '작은따옴표로 감싼 문자열 내의 "큰따옴표"는 문자열로 인식된다.'; 
    string = "큰따옴표로 감싼 문자열 내의 '작은따옴표'는 문자열로 인식된다."; 
    
    文字列が引用符で囲まれていない場合、JavaScriptエンジンは、キーワードや識別子などのタグとして認識します.
    JavaScriptの文字列は元のタイプで、文字列を作成すると変更できません.

    6.3テンプレート共通


    テンプレート文字はbacktic(`)で表します
    通常の文字列で改行(開く)は許可されていないため、エスケープシーケンスを使用してこの操作を実行できます.
    출처: 모던 JavaScript 튜토리얼
    テンプレート・ライブラリでは、このエスケープ・シーケンスを使用せずに改行し、スペースを保持します.
    ◇テキスト編集として受け取った情報処理に役立つ
    文字列は+で接続できます.+1つ以上の被演算子が文字列である場合、文字列演算子として使用されます.
    テンプレートライブラリでは、式を挿入することで文字列を簡単に挿入できます.
    var first = 'Ung-mo';
    var last = 'Lee';
    
    // ES6: 표현식 삽입
    console.log(`My name is ${first} ${last}. `); // My name is Ung-mo Lee.
    式を挿入するには、式を${}で囲みます.式の計算結果が文字列でなくても、タイプは強制的に文字列に変換され、挿入されます.テンプレートライブラリで使用する必要があります(backtic).

    6.4ブールタイプ


    ブールタイプの値は、論理真、偽true、falseのみを表す

    6.5未定義タイプ


    未定義の値は未定義の一意の値です
    varキーワードとして宣言された変数がデフォルトでundefinedの場合、参照は→変数として宣言された後に値が指定されていない変数に初期化され、undefinedが返されます.
    定義されていないのは、開発者が意図的に割り当てた値ではなく、JavaScriptエンジンが変数を初期化する際に使用する値です.
    開発者が未定義を変数に割り当てる意図がある場合は、未定義の初心に反し、混乱を招く可能性があります.

    6.6空のタイプ


    nullタイプの値nullは一意です
    変数に値がないことを意図的に宣言するために使用
    変数にnullを割り当てると、変数が以前参照した値を参照しなくなることを意味します.
    関数が有効な値を返さない場合はnullを明示的に返すこともできます.

    6.7シンボルタイプ


    元のタイプの変更不可値.
    シンボル値は、他の値と重複しない唯一の値です.
    シンボル以外の元の値はテキストで生成されますが、シンボルはSymbol関数を呼び出すことで生成されます.
    // 심벌 값 생성
    var key = Symbol('key');
    console.log(typeof key); // symbol
    
    // 객체 생성
    var obj = {};
    
    // 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.
    obj[key] = 'value';
    console.log(obj[key]);  // value

    6.8オブジェクトタイプ


    JAvascriptはオブジェクトベースの言語で、javascriptを構成するほとんどの言語がオブジェクトです.
    これまでに表示された6つのデータ型以外の値はすべてオブジェクト型です

    6.9データ型が必要

  • メモリ値を特定するために必要なメモリ容量の大きさ
  • 基準値を特定するために一度に取得すべきメモリ容量の大きさ
  • メモリから読み出したバイナリ数の解釈方法を決めるため
  • 6.10ダイナミックタイプ


    静的タイプ言語(C,JAVA):宣言変数の大きな変数に割り当てられる値のタイプ
    静的言語では、データ型を事前に宣言する必要があります.これを明示的なタイプ宣言と呼びます.
    静的タイプ言語では変数のタイプは変更できません.宣言されたタイプにのみ値を割り当てることができます.
    コンパイル時にタイプチェックを実行し、失敗するとエラーが発生し、プログラム自体の実行がブロックされます.
    →強制タイプの一貫性.より信頼性の高いコードを実装することでランタイムエラーを低減
    JavaScriptの変数は、宣言ではなく割り当てによって決定されます.
    再割り当てにより、変数のタイプはいつでも動的に変更できます.
    ダイナミックタイピング
    JavaScriptはダイナミックタイプ言語です
    変数にはタイプがありません.価格はタイプです.変数のタイプは、変数に割り当てられた値によって動的に決定されます.
    JavaScriptエンジンは、開発者の意図にかかわらず、自動変換タイプをデフォルト化します.エラー予測で作成されたプログラムはもちろんエラーが発生します.
    ◇ダイナミックタイプ言語は柔軟性は高いが、信頼性は低い
    変数を使用する際の注意点
  • 変数は必要に応じてのみ使用します.変数が多ければ多いほど、エラーの確率が高くなるので、必要な変数をできるだけ少なく保持します.
  • 変数の副作用を抑制するために、変数の有効範囲をできるだけ小さくする.有効範囲が大きいほど、変数がエラーを引き起こす確率が高くなります.
  • グローバル変数はなるべく使用しない.参照/変更可能なグローバル変数は、どこにいても予期せぬ値を変更する可能性があります.間違いの原因を特定するのは難しい.
  • 変数ではなく定数で値の変更を抑制
  • 変数名は、変数の目的や意味を把握するために命名される.すべての識別子は、その理由を特定するために適切な名前で命名する必要があります.明確なネーミングにより、コードの理解が容易になり、コラボレーションが容易になり、生産性が向上