ホームページ > 記事 > ウェブフロントエンド > JavaScriptの型、値、変数のまとめ_JavaScriptスキル
前書き: JavaScript データ型は、プリミティブ型とオブジェクト型の 2 つのカテゴリに分類されます。 5 つのプリミティブ タイプ: 数値、文字列、ブール値、null (空)、未定義 (未定義)。オブジェクトは属性のコレクションであり、各属性は「名前と値のペア」で構成されます (値はプリミティブ値またはオブジェクトにすることができます)。 3 つの特別なオブジェクト: グローバル オブジェクト、配列、関数。 JavaScript 言語のコアでは、日付 (Date) クラス、通常 (RegExp) クラス、およびエラー (Error) クラスの 3 つの便利なクラスも定義されています。
1 つの数字
JavaScript は整数値と浮動小数点値を区別しません。 JavaScript は 10 進整数リテラル (いわゆるリテラルはプログラム内で直接使用されるデータ値です) と 16 進値 (先頭に 0x または 0X が付きます。これは文字の o ではなく数字の 0 です) を認識できます。考えてみてください。それが文字 o の場合、そうであれば、16 進数値が識別子になります。) ECMAScript 標準は 8 進数リテラルをサポートしていませんが、JavaScript の一部の実装では、8 進数形式を使用して整数 (先頭に数字 0 が付きます) を表すことができます。筆者は、IE、Chrome、FF の 3 つのブラウザで整数を表すために 8 進数を使用しています。変数の代入も問題ありません。ただし、ECMAScript6 の厳密モードでは、8 進リテラルは明示的に禁止されています。
浮動小数点リテラルを記述するには 2 つの方法があります。 ① 実数の伝統的な書き方: 整数部分、小数点、および小数部分で構成されます。 ② 指数計算方法: つまり、実数の後に文字 e または E が続き、その後に正または負の符号が続きます。 、その後に整数の指数が続きます。
1.1 四則演算のオーバーフロー
JavaScript の算術演算では、オーバーフロー、アンダーフロー、または 0 で割り切れる場合にエラーが報告されません。
オーバーフロー: 演算結果が JavaScript が表現できる数値の上限を超える場合、結果は正の無限大または負の無限大-無限大になります。無限値の動作特性も現実と一致しています。それらに基づく加算、減算、乗算、および除算の演算結果は依然として無限値です (もちろん、その符号は保持されます): 演算結果が無限である場合。ゼロに近く、JavaScript が表現できる最小値よりも小さい値がまだ小さい場合に何が起こったのか。この場合、0が返されます。負の数値がアンダーフローした場合、特別な値「負のゼロ」が返されます。負のゼロと整数のゼロは、除数を除いて本質的に等しい (厳密な等価 === を使用してテストすることもできる):
var zero = 0; //正零值 var negz = -0; //负零值 zero === negz //表达式返回值为true 1/zero === 1/negz //表达式返回值false,等价于判断正无穷大和负无穷大是否严格相等
0 で割り切れると、正の無限大または負の無限大が返されます。ただし、0 を 0 で除算すると、NaN (JavaScript の事前定義オブジェクト Number の NaN プロパティの値) が返されます。 NaN が返される状況は 4 つあります。 ① 0 を 0 で割った場合 ② 無限大を無限大で割った場合 ③ 任意の負の数に対して平方根演算を実行した場合 ④ 数値ではないオペランド、または数値に変換できないオペランドで算術演算子が使用された場合。
NaN 値には特別な点があります。それは、それ自体を含め、どの値とも等しくありません。変数 x が NaN であるかどうかを判断するには、次の 2 つの方法があります。 ① isNaN() 関数を使用する。 ② x != x を使用して、x が NaN である場合にのみ式の結果が true になる。 JavaScript にも同様の関数 isFinite() があり、パラメータが NaN、Infinity、または -Infinity でない場合に true を返します。
1.2 2 進浮動小数点数と丸め誤差
実数は無数にありますが、JavaScript が浮動小数点数の形で表現できるのは限られた数だけです。つまり、JavaScript で実数を使用する場合、それらは実数値の単なる近似表現にすぎないことがよくあります。 JavaScript は IEEE-754 浮動小数点数表現を使用します。これは、1/2、1/8、1/1024 などの分数を正確に表現できるバイナリ表現ですが、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编码规则——用两个16位值组成一个序列(或称作“代理项对”)表示。这意味着一个长度为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稍有理解。
字符串的定界符可以是单引号或者双引号。这两种形式的定界符可以嵌套,但是不能多层嵌套(比如,双引号可以包含单引号,这时单引号中不能再包含双引号了)。正如上篇所说,一个字符串值可以拆分为数行,每行必须以反斜线(\)结束,这时反斜线和行结束符都不算是字符串内容,即字符串本身并非是多行,只是写成了多行的形式。
注意:①在JavaScript中字符串是固定不变的(除非重新赋值),类似replace()和toUpperCase()的方法都返回新字符串,原字符串本身并没有变化;②字符串可以当做只读数组,除了使用charAt()方法来查询一个单一字符,也可以使用方括号的方式来访问字符串中的单个字符(16位值),例如:
s = "hello, world"; s[0] //=>"h"
2.2 エスケープ文字
エスケープ文字の意味
o NUL 文字 (u0000)
b バックスペース文字 (u0008)
t 水平タブ(u0009)
n 改行文字 (u000A)
v 垂直タブ (u000B)
f フォームフィード文字 (u000C)
r キャリッジリターン (u000D)
" 二重引用符 (u0022)
' アポストロフィまたは一重引用符 (u0027)
\バックスラッシュ(u005C)
xXX 2 桁の 16 進数 XX
で指定される Latin-1 文字
uXXXX 4桁の16進数XXXXで指定されるUnicode文字
注: 「」文字が表にリストされていない文字の前にある場合、「」文字は無視されます。たとえば、「#」と「#」は同等です。バックスラッシュには、複数行の文字列の各行の末尾にバックスラッシュを使用する役割もあることを忘れないでください。
3 ブール値
JavaScript の値はブール値に変換できます。このうち、null、unknown、0、-0、NaN、""(空文字列)の6つの値はfalse、falseに変換され、これら6つの値をすべて「false値」と呼ぶこともあります。オブジェクト (配列) を含むその他の値は true に変換され、true およびこれらの値は「true 値」と呼ばれます。注: Boolean には toString() メソッドが含まれているため、このメソッドを使用して文字列を「true」または「false」に変換できますが、他の便利なメソッドは含まれていません。以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。