【管さんのNodeの旅・1】JavaScript基礎復習(一)
1773 ワード
タイプ
JavaScriptタイプは簡単に二つのグループに分類できます.基本タイプと複雑なタイプです.基本タイプにアクセスします.アクセスは値です.複雑なタイプにアクセスします.アクセスは値の参照です.
タイプの判断
JavaScriptで正確に変数を判断するタイプは容易ではない.いくつかの例を通してみましょう.
条件表式にはfalse:null、undefined、''と判定される値があります.
もう一つの状況を見に来ます.
JavaScriptタイプは簡単に二つのグループに分類できます.基本タイプと複雑なタイプです.基本タイプにアクセスします.アクセスは値です.複雑なタイプにアクセスします.アクセスは値の参照です.
//
var a = 5;
var b = a;
b = 6;
a; //=>5
b; //=>6
//
var a = ['hello', 'world!'];
var b = a;
b[0] = 'bey';
a[0]; //=>bey
b[0]; //=>bey
上記の複雑なタイプの例では、aとbは同じ値の参照を含んでいる.したがって、配列の最初の要素がbによって修正されると、aの対応する値も変化し、つまりa[0]==b[0]となる.タイプの判断
JavaScriptで正確に変数を判断するタイプは容易ではない.いくつかの例を通してみましょう.
//
var a = 'hello';
var b = new String('world!');
a + b; //=>hello world!
aとbに対してtypeofとinstance ofの操作を行います. typeof a == typeof b; //=>false
a instanceof String; //=>true
b instanceof String; //=>false
意外な結果ですが、bは文字列ではないですか?答えはこの二人とも本物の文字列です. a.substr == b.substr; //=>true
また、==を使うと判定が等しくなり、==を使うと結果が違ってきます. a == b; //=>true
a === b; //=>false
類型定義に差異があることを考慮して、類型を定義する際にnewを回避し、直観定義を使用することを提案する.条件表式にはfalse:null、undefined、''と判定される値があります.
もう一つの状況を見に来ます.
//
var a = null;
var b = [];
var c = {};
私たちは定義した変数に対してtypeofとinstance ofの操作を続けます. typeof a == typeof b; //=>true
typeof b == typeof c; //=>true
a instanceof Object; //=>true
b instanceof Object; //=>true
c instanceof Object; //=>true
この時は直接タイプで判断することができません.その時は対象内部の「クラス」の値を確認します. Object.prototype.toString.call(b) == Object.prototype.toString.call(c); //=>false
Object.prototype.toString.call(b) == '[object Array]'; //=ture
instance of Arayこの方法は配列初期化と同じコンテキストでのみ有効である.