JavaScriptのタイプ、値、変数のまとめ

4389 ワード

前言:JavaScriptのデータ型は、元のタイプとオブジェクトのタイプの2種類に分けられます.5つの元のタイプ:数値、文字列、ブール値、null(空)、undefined(未定義).オブジェクトは属性の集合であり、各属性は名前/値ペア(値は元の値でもオブジェクトでもよい)で構成されます.3つの比較的特殊なオブジェクト:グローバルオブジェクト、配列、関数.JavaScript言語コアでは、日付(Date)クラス、正規(RegExp)クラス、エラー(Error)クラスの3つの有用なクラスも定義されています.
1数値
JavaScriptでは整数値と浮動小数点値は区別されません.JavaScriptは、10進数整数型の直接量(直接量とは、プログラムで直接使用されるデータ値)と、16進数値(0 xまたは0 Xを接頭辞とし、それは数字0がアルファベットoではない.アルファベットoであれば、その16進数値は識別子にならないのではないかと考える.ECMAScript規格では8進数直接量はサポートされていませんが、JavaScriptのいくつかの実装では8進数で整数(数字0を接頭辞として)を表すことができます.筆者は自分のパソコンのIE、Chrome、FFの3つのブラウザで8進数を使って変数に値を付けても問題ありません.しかし、ECMAScript 6の厳格なモードでは、8進数直接量は明示的に禁止されています.
浮動小数点型の直接量には2つの書き方があります.1伝統的な実数の書き方:整数部分、小数点と小数点の部分からなる.②指数計数法:実数の後にアルファベットeまたはE、後にプラスマイナス、後に整数の指数を付ける.
1.1算術演算のオーバーフロー
JavaScriptでの算術演算はオーバーフロー(overflow)、アンダーフロー(underflow)、または0で除算された場合にエラーは報告されません.
オーバーフロー:演算結果がJavaScriptが表す数値の上限を超えた場合、結果は正無限大Infinityまたは負無限大-Infinityとなります.無限大の値の動作特性も現実に合っています.加算、減算、乗算、除算の結果に基づいて、無限大の値です(もちろん、正負の番号は保持されます).アンダーフロー:演算結果が無限にゼロに近づき、JavaScriptが表す最小値よりも小さい場合に発生します.この場合、0が返されます.負の数がオーバーフローした場合、特殊な値「負のゼロ」が返されます.負のゼロと整数のゼロは基本的に等しい(厳密に等しい==を使用してテストすることもできる).

var zero = 0;  //   
var negz = -0;  //   
zero === negz  //       true
1/zero === 1/negz  
//      false,                    

0で除算すると、正の無限大または負の無限大の値が返されます.ただし、0を0で割ると、NaN(JavaScriptの事前定義されたオブジェクトNumberのNaN属性の値)が返されます.NaNを返す場合は、①0を0で割る②無限大を無限大で割る③任意の負数を開方演算する④算術演算子が、数字ではない、あるいは数字に変換できない演算数とともに使用される場合がある.
NaN値には特殊な点があります.それは任意の値と等しくありません.それ自体も含まれています.変数xがNaNであるかどうかを判断する2つの方法:1関数isNaN()を使用する②xを使用する!=xは、xがNaNである場合にのみ、式の結果がtrueであると判断する.JavaScriptには、パラメータがNaN、Infinity、または-Infinityでない場合にtrueを返す類似の関数isFinite()があります.
1.2バイナリ浮動小数点数と四捨五入エラー
実数は数え切れないほどありますが、JavaScriptは浮動小数点数の形でその中の有限個数しか表示できません.すなわち,JavaScriptで実数を用いる場合,しばしば真実値の近似表現にすぎない.JavaScriptはIEEE-754浮動小数点数表現法を採用しており、1/2、1/8、1/1024のような点数を正確に表すことができるバイナリ表現であるが、10進数1/10、1/10などは正確に表すことができない.例:

var x = 0.3 -0.2;  //x=0.09999999999999998
var y = 0.2 - 0.1;  // y=0.1
x == y       //false
x == 0.1      //false
y == 0.1      //true
0.1 == 0.1     //true
var z = x + y;   //z=0.19999999999999998

2テキスト
2.1文字列、文字セット
文字列(string)は、16ビット値からなる可変の秩序化シーケンスのセットであり、各文字は通常Unicode文字セットから来ている.文字列の長さ(length)は、その含まれる16ビットの値です.JavaScriptは文字列タイプでテキストを表します.注意:JavaScriptには、個々の文字を表す「文字型」はありません.16ビットの値を表すには、文字列変数に値を割り当てるだけです.
JavaScriptはUTF-16符号化Unicode文字セットを採用し、JavaScript文字列は符号のない16ビット値のセットからなるシーケンスである.16ビットとして表すことができないUnicode文字は、UTF-16符号化規則に従います.2つの16ビット値で1つのシーケンス(または「エージェント・アイテム・ペア」と呼ばれます)で表されます.これは、長さ2のJavaScript文字列がUnicode文字を表す可能性があることを意味します.注意:JavaScriptで定義された様々な文字列の操作方法は、文字ではなく16ビットの値に作用し、エージェント・アイテムのペアは個別に処理されません.本はここを見て、また結合します.http://www.alloyteam.com/2013/12/js-calculate-the-number-of-bytes-occupied-by-a-string/前述したように、Unicode文字セット、UTF-8、UTF-16についてやっと少し理解できました.
文字列のデリミタは、単一引用符または二重引用符であってもよい.この2つの形式のデリミタはネストできますが、複数のネストはできません(たとえば、二重引用符には単一引用符を含めることができますが、この場合、単一引用符には二重引用符を含めることはできません).前編で述べたように、1つの文字列の値を数行に分割することができ、各行は反斜線()で終わる必要があります.この場合、反斜線と行の終点は文字列の内容ではありません.つまり、文字列自体は複数行ではなく、複数行の形式で書かれています.
注意:1 JavaScriptでは文字列は固定されており(値を再割り当てしない限り)、replace()やtoUpperCase()のような方法では新しい文字列が返され、元の文字列自体は変化しません.2文字列はcharAt()を使用する以外は読取り専用配列として使用できます.メソッドを使用して、単一の文字を問い合せるか、角カッコを使用して文字列内の単一の文字(16ビット値)にアクセスします.たとえば、次のようにします.

    s = "hello, world";
    s[0]   //=>"h"

2.2エスケープ文字
エスケープ文字 意味  \o NUL文字(b) リトラクト(08)t 水平タブ(09) 改行記号(A)v 垂直タブ(B)f 改ページ記号(C)r リターン記号(D) 二重引用符(22)' 引用符または引用符(27)\ 反斜線(C)xXX 2桁の16進数XXで指定されたLatin-1文字uXXXX 4ビット16進数XXXXで指定されたUnicode文字                                                                                                                                                                                                                                                                                                                                注意:「」文字が表にリストされていない文字の前にある場合は、「」は無視されます.たとえば、「#」と「#」は等価です.反斜線のもう1つの役割は、複数行の文字列の各行の最後に反斜線を使用することです.   
3ブール値
JavaScriptの値はすべてブール値に変換できます.null、undefined、0、-0、NaN、"(空の文字列)の6つの値はfalseに変換され、falseとこの6つの値は「偽値」と呼ばれる場合があります.オブジェクト(配列)を含む他のすべての値はtrueに変換され、trueとこれらの値に対応する値は「真値」と呼ばれます.注意:ブール値にはtoString()が含まれています.メソッドです.したがって、このメソッドを使用して文字列を「true」または「false」に変換できますが、他の有用なメソッドは含まれません.
以上が本文のすべてですが、お好きになってください.