データ型


22.03.06
第6章データ型
(データ)タイプは値のタイプです.すべての値にデータ型があります.元のタイプとオブジェクトのタイプに分けられます.
6.1数値タイプ
JAvascriptエンジンは、すべての数を誤って処理し、整数を表すデータ型はありません.
ECMAScript仕様によれば、数値タイプの値は、分配密度64ビット浮動小数点フォーマットに従う.
javascriptエンジンで整数で表しても、実は間違っています.したがって、整数で表す数を除算してもエラーが発生します.
また、正無限大/-無限大:負無限大/NAN演算不可(Not a number)などの特殊な値を表すこともできる.
JavaScriptでは大文字と小文字を区別することが重要!だからnan、nanのようなものは値ではなく識別子です.
配位密度は64ビット,単精度は32ビットであった.
浮動小数点数:浮動小数点数が固定されていないことを示し、浮動小数点数が移動します.
指数部(2の反復二乗を表す部分)と数字部(常用ログ値の数字部分)を分けて表現する方式.
6.2文字列タイプ
テキストデータを表すために使用します.
通常、一重引用符(")、二重引用符("")、または逆引用符を使用できます.
文字列を引用符で囲むのは、キーワードや識別子などのタグと区別するためです.
また、文字列を引用符で囲まないと、スペースなどのスペース文字を含めることはできません.
JavaScriptの文字列タイプは元のタイプで、変更不可(可変値)の値です.
つまり、文字列が生成されると変更できません.
6.3テンプレート共通
これはES 6から新たに導入された文字シリアル表記法である.basicで表現します.
複数行の文字列(複数行の場合)、式の挿入、テンプレートのタグ付けなど、便利な文字列処理機能を提供します.
実行時に通常文字列に変換して処理します.
複数行文字列:通常の文字列内では改行は許可されません(開きます).
改行などの通常の文字列にスペースを表示するには、逆スラッシュ()で始まるエスケープシーケンスを使用する必要があります.
※「エスケープシーケンス」と「参照回線入力とリターンキャラクタ」(p.63)
通常の文字列とは異なり、テンプレート文字では、エスケープシーケンスを使用せずに改行が許可され、すべてのスペースがそのまま適用されます.
표현식 삽입 : 백틱 내에 ${}을 통해 표현식 처리 가능하다.
6.4ブールタイプ(Boolean type)
論理的な真実だけが、嘘を表すtrueとfalse.
ブール型の値は、条件文でよく使用され、条件文は真と偽の条件に分けてプログラムフローを制御します.
6.5未定義タイプ
唯一定義されていません.varキーワードとして宣言された変数はデフォルトでは定義されていません.
変数宣言によって取得されたメモリ領域を最初に割り当てるまでは、そのメモリ領域は空に保持されません(ほとんどが空で、ゴミ値です).
JavaScriptエンジンは未定義に初期化されます.
すなわち、宣言変数から値が割り当てられていない変数を参照すると、定義されていない変数が返されます.
変数を参照するときにundefinedを返すと、参照される変数は宣言以来値が割り当てられていない、すなわち初期化されていない変数であることを示します.
変数に値がないことを示す場合はnullを指定します.
変数宣言.(宣言)関数定義.(definition)
6.6 nullタイプ(=null;)
nullは唯一変数に値がないことを故意に宣言するために使用します(故意に存在しない故意に存在しません).
nullが参照しない前に参照する値を指定します.JavaScriptエンジンは、誰も使用していないメモリスペースに対してゴミ収集を実行します.
関数が有効な値を返さない場合はnullを明示的に返すこともできます.
6.7シンボルタイプ
ES 6に追加された7種類目.元のタイプの変更不可値.
他の値と重複しない一意の値.主に、名前の競合のリスクがないオブジェクトを作成するための一意の構成キーです.
シンボル関数を呼び出して生成します.このときに生成される符号値は外部に露出されず、他の値と絶対に繰り返されない一意の値である.
6.8オブジェクトタイプ
データ型を元のタイプとオブジェクトのタイプに分けます.全然違うから
JavaScriptはオブジェクトベースの言語で、ほとんどのJavaScriptがオブジェクトです.
6.9データ型が必要
1) 데이터 타입에 의한 메모리 공간의 확보와 참조
'값'이란 건 메모리에 저장, 참조할 수 있어야 함.
변수가 할당되는 데이터 타입에 따라 확보해야할 메모리 공간의 크기가 결정된다.
ECMAScript 사양은 문자열과 숫자 타입 외의 데이터 타입의 크기를 명시적으로 규정하고 있지는 않다.
값을 참조하는 경우 식별자를 통해 값이 저장되어 있는 메모리 공간의 주소를 찾아갈 수 있다.
즉, 숫자값이 저장되어 있는 메모리 공간의 선두 메모리 셀의 주소를 찾아갈 수 있다.
이 때 값을 참조하려면 메모리 셀의 개수(바이트 수)를 알아야 한다.
어떻게 한번에 읽어 들어야 할 메모리 셀의 크기를 알 수 있을까? 변수에 할당 되어 있는 값의 타입을 통해.

2) 데이터 타입에 의한 값의 해석
모든 값은 데이터 타입을 가지며, 메모리에 2진수, 즉 비트의 나열로 저장됨.
메모리에 저장된 값은 데이터 타입에 따라 다르게 해석 가능.
要するに、データ型は値のタイプであり、すべての値にデータ型があります.
1)値を格納する際に必要なメモリ容量の大きさを決定します.
2)参照値を決定するときに一度に取得するメモリ容量の大きさ.
3)メモリから取得したバイナリ数をどのように解釈するかを決定します.
以上の3つの理由から,データ型は必要といえる.
6.10ダイナミックタイプ
1) 동적 타입 언어와 정적 타입 언어
· 명시적 : 분명하게 드러나 보이다.
정적 타입 언어는 변수를 선언할 때 변수에 할당할 수 있는 값의 종류, 즉 데이터 타입을 먼저 선언해야한다. -> 명시적 타입 선언
컴파일 시점에 타입체크(선언한 데이터 타입에 맞는 값을 할당했는지)를 수행.
다양한 데이터 타입을 보고싶을 때는 typeof 연산자로 연산. 정확히 말하면 변수에 할당된 값의 데이터 타입을 반환.
자바스크립트는 동적 타입 언어. 자바스크립트의 변수는 선언이 아닌 '할당'에 의해 타입이 결정된다. (타입 추론 type inference)
그리고 재할당에 의해 변수의 타입은 언제든 동적으로 변화할 수 있음. -> 동적 타이핑
변수는 타입을 갖지 않는다. 하지만 값은 타입을 갖는다.

2) 동적 타입 언어와 변수
동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다. 변수를 사용할 때 주의해야 할 점이 몇 가지 있다.
1. 무분별하게 남발하지 않는다. 필요한 만큼 최소한으로 유지하기.
2. 변수의 유효 범위(스코프)는 최대한 좁게. 넓으면 오류가 발생할 확률이 상승함.
3. 전역 변수는 최대한 사용하지 말기.
4. 변수보다 상수(const)를 사용하기.
5. 변수 이름은 심사숙고해서 짓기.
誤解を防ぐためにコードを作成します.可読性の良いコードは良いコードです.