第6章データ型


JavaScriptのデータ型には、7種類の元のタイプ(number、string、boolean、undefined、null、symbol)とオブジェクトタイプがあります。

6.1数値タイプ


「数値タイプの値は、分配密度64ビットの浮動小数点フォーマットに従います.」
=>すべての数量を誤って処理します.
=>バイナリ、8進数、16進数の文字はすべて10進数と理解できます.
var binary = 0b01000001;
var octal = 0o101;
var hex = 0x41;

console.log(binary);    // 65
console.log(octal);     // 65
console.log(hex);       // 65
また、Infinity-InfinityNaNの3つの特殊値を表すこともできる.
console.log(1 / 0);     // Infinity
console.log(-1 / 0);    // -Infinity
console.log(5 * 'hello'); // NaN

6.2文字列タイプ


UTF-16の集合は大部分の文字を表すことができる.
JavaScriptの文字列は元のタイプで、可変値です.
str = '작은따옴표 안에 "큰따옴표" 사용가능';
str2 = "큰따옴표 안에 '작은따옴표' 사용가능";	//
str3 = `백틱을 사용한 문자열의 기능은 밑에서 계속...`;	// ES6

6.3テンプレート文字


テンプレートライブラリには、複数行の文字列、挿入式、タグテンプレートなどの文字列処理機能があり、backticを使用して表示されます.
  • 複数行文字列
  • 一般問題列では、1行または引用符などを表すには、エスケープシーケンスを使用する必要がありますが、テンプレート文字では、エスケープシーケンスを使用せずに改行やスペースなどを適用します.
    var old_str = '<ul>\n\t<li>일반 문자열<li>\n</ul>';
    
    var template_literal = `<ul>
    	<li>템플릿 리터럴</li>
    </ul>`;
    エスケープシーケンスの意味0 Nullb backspacefフォーム入力n単一行r単一行tラベル(水平)vラベル(垂直)uXXX Unicode'単引用符逆スラッシュ
    ハーネスとリターン 過去のタイプライターからカーソルを制御する方式で、LFはカーソルを現在位置から1行下げ、CRはカーソルを一番前に送る。 現在、異なるオペレーティングシステムには異なる開行方式があります。WindowsはCR+LF、UnixはLF、MacOS(バージョン10以降)はLFを使用します。ほとんどのテキストエディタでは、オペレーティングシステムのテキストが自動的に変換されます。Javascriptでは、通常LFで始まります。
  • 挿入式(式内挿)
  • var name = '홍길동';
    var age = '18';
    
    console.log(`반갑습니다! ${name}님의 ${age}번째 생일을 축하합니다!`);	
    // 반갑습니다! 홍길동님의 18번째 생일을 축하합니다!
    
    console.log(`3 + 16 = ${3 + 16}`);  // 3 + 6 = 19

    6.4ブールタイプ


    ブールタイプにはtrueとfalseの2つの値しかありません.

    6.5未定義タイプ


    値を指定せずにvarキーワードで変数を宣言する場合、デフォルトはundefinedに初期化されます.
    宣言と定義 Cのような場合、宣言と正義の区別は非常に厳しい。コンパイラが識別子の存在のみを通知する場合は宣言、変数を作成してメモリアドレスに関連付ける場合は区切りを定義します。 JAvascriptのundefinedは「未定義」状態ですが、変数を宣言するとデフォルトで定義され、宣言と定義の区別が曖昧になります。ESMAScript仕様では、変数は「宣言」、関数は「定義」です。

    6.6空のタイプ

    nullは、意図的に無価であることを示すために使用される.変数にnullを割り当てると、以前の参照値が明示的に削除されることを意味します.
    関数が有効な値を返さなくてもnullは明示的に返されます.例えば、条件を満たす要因がない場合、document.querySelectorメソッドはnullを返す.

    6.7シンボルタイプ


    シンボルはES 6に追加されたタイプで、変更できない元のタイプ値です.
    Symbol関数を呼び出して生成されるシンボル値は、外部に露出せず、他の値と重複しない唯一の値です.

    6.8オブジェクトタイプ


    JavaScriptのデータ型は、元のタイプとオブジェクトのタイプに大きく分けられます.上記の元のタイプを除き、すべての値がオブジェクトタイプです.

    6.10ダイナミックタイプ

  • 静的および動的タイプ言語
  • 静的タイプ言語は、変数を宣言するときにデータ型を事前に宣言し、変数のタイプを変更することはできません.コンパイル時にタイプチェックを行い、パスできないとエラーが発生し、より安定したコードが実現します.
    典型的な静的言語:C、C++、Java、C#、Kotlin、Haskell、Rust、Scalaなど

    動的タイプ(dynamic/weaktype)言語は、変数に任意のデータ型値を自由に割り当てることができます.タイプは、変数によって宣言されるのではなく、割り当て(タイプ推定、タイプ推定)によって決定されてもよいし、再割り当てによって動的に変更されてもよい(ダイナミックタイプ、ダイナミックタイプ).
    典型的なダイナミックタイプ言語:JavaScript、Python、PHP、Ruby、Lisp、Perlなど
  • 動的言語および変数
  • ダイナミックタイプ言語の利便性と柔軟性は高いが、信頼性は低い.変数値とタイプはいつでも変化する可能性があるため、プログラムが複雑であればあるほど、変数値の追跡が難しくなります.したがって,安定したプログラムを記述するためには,変数を用いる際に特に注意しなければならない.
    - 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다.
    - 변수의 스코프(유효 범위)는 최대한 좁게 만들어 변수의 부작용을 억제해야 한다.
    - 전역 변수는 최대한 사용하지 않도록 한다.
    - 변수보다는 상수를 사용해 값의 변경을 억제한다.
    - 변수 이름은 변수의 목적이나 의미를 파악할 수 있도록 네이밍한다.
    可読性の良いコードは良いコードです.
    これは李雄模の「モダンjavascript Deep Dive」という本で、学習過程で学んだ内容をまとめてアップロードした文章です。もっと詳しい内容を知りたい方は本を読んでください