ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 応用プログラミング(第 3 版)学習ノート 3 js の簡単なデータ型_基礎知識

JavaScript 応用プログラミング(第 3 版)学習ノート 3 js の簡単なデータ型_基礎知識

WBOY
WBOYオリジナル
2016-05-16 17:49:17913ブラウズ

ECMAScript是一种动态类型的语言,构建于5种简单数据类型(Undefined、Null、Boolean、Number、String)和一种复杂数据类型(Object)的基础之上。这篇文章就来复习一下简单数据类型,我会尽量从编程实践的角度来描述,下面代码运行环境为FireFox 14.0.1。

简单数据类型

简单数据类型 取值
Undefined undefined(只有一个值)
Null null(只有一个值)
Boolean true|false(只有两个值)
Number 数值
String 字符串

最初に説明する必要があるのは、ECMAScript では、Boolean、Number、String を含む上記の 5 つの単純なデータ型にはすべて、同じ名前の組み込みのパッケージング オブジェクトとリテラル値があるということです (単純なデータ型の変数) は、状況に応じて自動的にパッケージ化されるため、メソッドを直接呼び出すことができます。詳細については、組み込みオブジェクトについて説明するときに説明します。 🎜>

コードをコピーします コードは次のとおりです:
console.info(true.toString());//true,これは、Boolean() パッケージ化を使用してから
console.info(Boolean(false).toString( ));//false を呼び出し、false をブール型の値に変換します
console.info(new Boolean(false) ).toString());//false、false を Boolean()
console.info( false.toString());//false でラップします。これは、Boolean() パッケージ化を使用してから
を呼び出すことと同等です。 console.info('test'.toString());//test、これは String() パッケージ化を使用してから Call

try{
console.info(unknown.toString()) を呼び出すことと同等です。 );//対応するパッケージング タイプがないため、例外がスローされます。
}catch(e){
console.info(e );//TypeError
}
try{
console .info(null.toString());//対応するパッケージングタイプがないため、例外がスローされます
}catch(e){
console.info(e);//TypeError
}

var num = 4;
console.info(num.toString());//4、単純な数値変数で直接使用できます。メソッドの呼び出しは、それを Number() でラップしてから行うのと同じです。 call
//console.info(3.toString());//SyntaxError、構文エラーは try を使用してキャプチャできず、数値リテラルで直接呼び出すことができないことを示します


次に、最も一般的に使用されるデータ変換について説明します:
(1) ブール値に変換: !!value
(2) 数値に変換: value
(3) 文字列の変換: '' value
5 つの単純なデータ型については、以下で詳しく説明します。
1. 未定義型
未定義のデータ型には、値が 1 つだけあります。
(1) 初期化されていない値はすべてデフォルトで未定義になります (変数を明示的に未定義に初期化する必要はありません)。
(2) 関数スコープ内で、実パラメータが渡されていない関数パラメータは未定義です。
(3)関数が明示的にreturnまたはreturn;を行っていない場合、戻り値は不定となります。
(4) ECMAScript では、null==unknown は true を返し、null===unknown は false を返すと規定されています。
(5) 未定義の対応するブール値は false です。
(6) undefiend に対して typeof を使用すると、文字列 'unknown' が返されます。宣言されていない "変数" に対して使用した場合も、'unknown' が返されます。
(7) 未定義は、値を NaN に変換し、文字列を '未定義' に変換します。


コードをコピーします コードは次のとおりです。 );/ /true console.info(typeof undefined);//未定義 console.info(typeof noDefined);//未定義、未定義の識別子、typeof を使用すると、同じく未定義の識別子である未定義も返されます。使用可能な演算子は
console.info(!undefine);//true のみで、ここでは true を返します。これは、多くの条件文で変数が初期化されているかどうかを判断するための基礎となります。 ;/ /二重否定を使用すると、対応するブール値に変換されます。ここでは、undefiend の対応するブール値が false であると述べられています。
console.info(undefined==null);//ES は規定しています。 null と未定義の等価性テストは true を返します
console.info(undefined===null);//しかし、結局のところ、未定義と null は 2 つのデータ型であり、合同比較を使用すると false が返されます
console.info。 (typeof undefined ==unknown);//false、typeof unknown は文字列 'unknown' を返すため、ここでは false が出力されます
console.info( unknown);//NaN、値を変換すると NaN
console.info ('' undefine);//未定義、文字列 'unknown' に変換されます


2. Null 型
Null 型にも値は 1 つだけあります: null。
(1) null 値に対して typeof を使用すると、文字列 'object' が返されます。
(2) null の対応するブール値は false です。
(3) オブジェクトの保存に変数を使用する場合は、null に初期化することをお勧めします。
(4) null は値を 0 に変換し、文字列を 'null' に変換します。




コードをコピー

コードは次のとおりです。 console.info(null===null) );/ /true console.info(typeof null);//object console.info(!null);//true console.info(!!null);//false、を示しますその null に対応するブール値は false
console.info(unknown==null);//true
console.info(unknown===null);//false
console.info( null); //0 、値 0 に変換されます
console.info('' null);//null、文字列 'null' に変換されます


3、Boolean类型
  Boolean类型只有两个值:true和false。
(1)虽然只有两个值,但是任何一种数据类型的值都能转换为与其相对应的Boolean值,转换方式主要有三种:
  A、通过转型函数Boolean()转换
    需要注意的是,当Boolean()作为转换函数时,会转换为一个与其相应的Boolean值,当作为构造函数时,会创建一个对象,而任意非空对象的Boolean值都是true,有时候这会造成误解,建议就是不使用Boolean()。对于String()、Number()也有类似情况。
  B、通过双重否定!!操作符转换
  C、通过隐式转换,比如一些条件语句中
(2)Boolean类型的true和false,使用typeof时,均返回字符串'boolean'。
(3)在转换为数值时,true和false分别转换为1和0,转换为字符串时,分别为'true'和'false'。
复制代码 代码如下:

var value = 'test';
var empty = '';
console.info(!!value);//true
console.info(!!empty);//false
console.info(Boolean(value));//true
console.info(Boolean(empty));//false
console.info(!!value === Boolean(value));//true,说明两种转换方式等价
console.info(!!empty === Boolean(empty));//true
console.info(new Boolean(value));//Boolean对象,注意这里使用了new,会创建一个对象
console.info(new Boolean(empty));//Boolean对象
if(value){//隐式转换为true
console.info(value);//test
}
if(empty){//隐式转换为false,不执行括号内部语句
console.info('empty');
}
if(new Boolean(empty)){//先创建对象,再隐式转换为true,会执行括号内部的语句
console.info('empty');//empty
}
console.info(typeof true == 'boolean');//true
console.info(+true);//1,一元操作符,转换为数值1
console.info(+false);//0
console.info(''+true);//true,重载后的+操作符,转换为字符串'true'
console.info(''+false);//false


具体的转换规则如下:

数据类型 转换为true的值 转换为false的值
Undefined - undefined
Null - null
Boolean true false
Number 任意非0数值(包括无穷大) 0和NaN
String 任意非空字符串 空字符串
Object 任意对象 -

4. 数値型

ECMAScript には個別の整数型や浮動小数点型はありません。数値型は 1 つだけあり、IEEE754 形式で表されます (この表現には計算中に丸め誤差が生じます)。詳細はこちらをご覧ください。これらのことは、私が学校で C 言語を学んだときにすでに頭痛の種でした。以下では、実際のプログラミングで最も一般的に使用されるものを先頭に示します。あまり重要でない詳細に煩わされたくない場合は、後でいつでも Number についての説明を省略できます。

(1)数値変換:主に以下の3つの変換関数

  • Number() 関数: Boolean() と同様に、データを Number 型に変換します。単項プラス演算子 ( ) を使用することをお勧めします。
  • parseInt() 関数: 整数を解析します。データとベースを渡すことができます。たとえば、parseInt('070',8) は 10 進数で 56 を出力します。
  • parseFloat() 関数: 浮動小数点数を解析し、解析されたデータの結果が整数の場合は、その整数を直接返すことに注意してください。

注: Number() と変換を使用する場合、true—> 1、false—> 0、未定義—> NaN、null—> 0、空の文字列—> 0、空でない文字列— > ;数値的に分析します。

コードをコピーします コードは次のとおりです。

var trueVal = true; 🎜>var falseVal = false;
var nullVal = null;
var floatVal = '1.0';テスト';
var empty = '';
console.info(Number(trueVal));//1
console.info(Number(falseVal));//0
console.info (Number( undef));//NaN
console.info(Number(nullVal));//0
console.info(Number(intVal));//1
console.info(Number (floatVal) );//1
console.info(Number(strVal));//NaN
console.info(Number(empty));//0

console.info( trueVal); //1
console.info( falseVal);//0
console.info( undef);//NaN
console.info( nullVal);//0
コンソール。 info( intVal );//1
console.info( floatVal);//1
console.info( strVal);//NaN
console.info( empty);//0

console.info(parseInt(trueVal));//NaN
console.info(parseInt(falseVal));//NaN
console.info(parseInt(undef));//NaN
console.info(parseInt(nullVal));//NaN
console.info(parseInt(intVal));//1
console.info(parseInt(floatVal));//1
コンソール.info( parseInt(strVal));//NaN
console.info(parseInt(empty));//NaN

console.info(parseFloat(trueVal));//NaN
console.info (parseFloat(falseVal));//NaN
console.info(parseFloat(undef));//NaN
console.info(parseFloat(nullVal));//NaN
コンソール。 info(parseFloat (intVal));//1
console.info(parseFloat(floatVal));//1
console.info(parseFloat(strVal));//NaN
console.info( parseFloat(empty ));//NaN


注: これらの変換関数の動作は、ブラウザの実装によって異なる場合があります。途中で質問がある場合は、独自のテストを作成することをお勧めします。実際のプログラミングプロセス。 『JavaScript による上級プログラミング (第 3 版)』では、このセクションで説明されている内容が実際の実行結果と異なる箇所が多くあります。たとえば、元の本では parseInt() は文字列のみを解析できると記載されていますが、次のコードは文字列を解析できます。



コードをコピーします。 toString:function(){
return this.value;
}
};
console.info(parseInt(object));//1


(2) 整数と浮動小数点数: C言語の影響を受けた人は頑固に整数と浮動小数点数を区別しなければなりません! ECMAScript では、これらは予想されるほど違いはありません。簡単に言うと、小数点を含み、小数点の後に 0 以外の桁が 1 つ以上ある値は浮動小数点数であり、それ以外の場合は整数です。たとえば、1.01 は浮動小数点数であり、小数点の後に 0 以外の値がないため、1., 1.00 はエンジンによって整数 1 に解析されます。 2 つの整数を除算した結果も 3 / 2 = 1 のように丸められると想像されるかもしれませんが、ECMAScript ではこれについて心配する必要はありません。その数学的性質は復元されており、3 / 2 = であることがわかります。 1.5、この 1 点については、オペレーター関連のセクションで再度言及します。

(3) 基数方式: キャリー方式とも呼ばれ、実際には各基数システムに基数があり、下位桁の値がこの基数に達すると、上位桁の値は 1 になります。日常生活で最もよく使われるのは 10 進法です。たとえば、時間の計測には 24 進法 (24 時間が 1 日) と 10 進法があります。 60 秒は 1 日です)、古代には 16 進数も使用されました (0.5 ポンドについて考えてください)。ただし、コンピュータ処理では電流はオンとオフの 2 つの状態しかないため、2 進数のデータしか処理できませんが、これは人間には理解しにくいため、10 進数とその中間の状態として 8 進数と 16 進数が使用されます。バイナリ変換の様子。

ES3 では 8 進数、10 進数、16 進数が使用できますが、ES5 では 8 進数が無効になっています。

8 進数: 0 から始まり、その後に 8 進数 (0 ~ 7) が続きます。数値が 7 を超える場合、先頭の 0 は無視され、10 進数として扱われます (例: 08)。 10 進数の 8 として解析されます。

16 進数: 数字の 0 と文字 x で始まり、その後に一連の 16 進数 (0-9a-fA-F) が続きます。

10 進法: すべての数字を 1 つずつ直接書くことも、科学的表記法を使用することもできます (理解できない場合は、中学校の数学の教科書を探して見てください)。

(3) 特殊な値: ECMAScript には、注意が必要な 2 つの特殊な値 NaN と Infinity があります。前者は数値ではない (Not a Number) を意味し、後者は数値を意味します。表現範囲内にない値は、方向を示すために正および負の符号を使用することもできます。これら 2 つの特別な値について、ここでは具体的な操作ルールについては検討しません (興味がある場合は、自分でテストしてください。以下にいくつかの例も示します)。

A. val==NaN を使用して変数が NaN であるかどうかを判断することはできませんが、グローバル isNaN() 関数を使用します。この関数はパラメータを受け取り、パラメータが数値に変換できる場合は true を返し、それ以外の場合は戻ります。間違い。

B. 範囲外かどうかを判断するために val==Infinity を使用せず、グローバルな isFinite() 関数を使用してください。この関数はパラメーターを受け入れ、パラメーター値が範囲内にある場合に true を返します。 、それ以外の場合は false を返します。ここでいう表現範囲とは、Number.MIN_VALUE から Number.MAX_VALUE までを指します。また、Number には、値がそれぞれ Infinity と -Infinity である Number.NEGATIVE_INFINITY と Number.POSITIVE_INFINITY という属性があります。
コードをコピー コードは次のとおりです。

console.info(0/0); //NaN
console.info(NaN==NaN);//false
console.info(NaN 1);//NaN
console.info(NaN/NaN);//NaN

var notNumber = NaN;
console.info(notNumber==NaN);//false
console.info(isNaN(notNumber));//true
console.info(1/ 0); //無限
console.info(-1/0); //-無限
console.info(1/Infinity);//0
console.info(Infinity/Infinity); //NaN
console.info(Infinity==Infinity); //true
var inf = Infinity;
console.info(inf==Infinity); !isFinite( inf));//true
console.info(!isFinite(NaN));//true
console.info(isNaN(Infinity));//false

注: 『JavaScript による上級プログラミング (第 3 版)』の 29 ページでは、値を 0 で割ると NaN が返されると記載されていますが、実際にはそうではありません。

5. 文字列型

ECMAScript では、一般的な C 系言語とは異なり、文字型はなく、文字列型 String が単純型として使用され、そのリテラルは引用符を使用します。 (一重引用符 ' または二重引用符 ")。

(1) 文字列型の操作の場合、プラス記号 " " はオーバーロードされます。文字列に値が追加される場合は、最初に String( ) を使用して追加されます。 (2) String() を使用して変換します。未定義—>'未定義'、null—>'null'、true—>' true'、false—>'false '、数値型 Number—> 数値的に表示される文字で変換、オブジェクト Object—> call toString



コード

(3) 文字列はバックスラッシュ「"」を使用してエスケープされます。一般的なエスケープ文字は次のとおりです。

字面量 含义 字面量 含义
n 换行 \ 反斜杠
t 制表 ' 单引号
b 空格 " 双引号
r 回车 xnn 以十六进制代码nn表示的一个字符
f 进纸 unnnn 以十六进制代码nnnn表示的一个Unicode字符
シンプルなデータ型については以上です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。