NaN:保留字(代表數據類型不是數字)程序員
undefined:對象屬性或方法不存在,或聲明瞭變量但從未賦值。
即當你使用了對象未定的屬性或者未定義的方法時或當你聲明一個變量,但你確從未對其進行賦值,便對
其進行操做(固然賦值除外),會有"undefined"提示null 值指出一個變量中沒有包含有效的數據。編程
產生 null 的緣由是:對一個變量顯式地賦值爲 null。 包含 null 的表達式之間的任何操做。數組
Boolean 表達式
一個值爲 true 或者 false 的表達式。
若是須要,非 Boolean 表達式也能夠被轉換爲 Boolean 值,可是要遵循下列規則:全部的對象都被看成 true。 當且僅當字符串爲空時,該字符串被看成 false。
null 和 undefined 被看成 false。
當且僅當數字爲零時,該數字被看成 false。函數
字符串比較
兩個字符序列之間的比較。
除非在進行比較操做的函數中指出,全部的字符串比較操做都是二進制的。
在英語中,二進制比較區分大小寫;而文本比較則不區分。工具
數值表達式
數值表達式指的是任何值爲數字的表達式。這種表達式的元素能夠包括關鍵字、變量、文字和運算
符的任意組合,只要此組合可以生成一個數字。在特定的狀況下,若是能夠的話,字符串也能夠被
轉換爲數字。測試
構造函數
一種 JScript 函數,具備兩個特殊的性質:由 new 運算符來調用此函數。 經過 this 關鍵字將新
建立對象的地址傳遞到此函數。 強列建議使用構造函數來初始化新的對象。this
ASCII 字符集
美國標準信息交換編碼 (ASCII) 的 7 位字符集,它被普遍地用來表示標準的美國鍵盤上的字母和符號。編碼
ASCII 字符集與 ANSI 字符集中的頭 128 個字符 (0–127) 徹底相同。Automation 對象經過
Automation 接口能夠被其餘應用程序或編程工具使用的對象。對象
全球標準時間 (UTC)
全球標準時間指的是由世界時間標準設定的時間。原先也被稱爲格林威治標準
時間或者 GMT。接口
Jscript 有三種主要數據類型、兩種複合數據類型和兩種特殊數據類型。
主要(基本)數據類型是:字符串 數值 布爾
複合(引用)數據類型是:對象 數組
特殊數據類型是:Null Undefined
null = = undefined
true
"NaN" = = NaN
false
5 = = NaN
false
NaN = = NaN
false
NaN != NaN
true
false = =0
true
true = =1
true
true = = 2
false
undefined = = 0
false
null = = 0
false
"5" = = 5
true
1.類型分析:
js中的數據類型有undefined,boolean,number,string,object等5種,前4種爲原始類型,第5種爲引用類型。
var a1;
var a2 = true;
var a3 = 1;
var a4 = "Hello";
var a5 = new Object();
var a6 = null;
var a7 = NaN;
var a8 = undefined;
alert(typeof a); //顯示"undefined"
alert(typeof a1); //顯示"undefined"
alert(typeof a2); //顯示"boolean"
alert(typeof a3); //顯示"number"
alert(typeof a4); //顯示"string"
alert(typeof a5); //顯示"object"
alert(typeof a6); //顯示"object"
alert(typeof a7); //顯示"number"
alert(typeof a8); //顯示"undefined"
從上面的代碼中能夠看出未定義的值和定義未賦值的爲undefined,null是一種特殊的object,NaN是一種特殊的number。
2.比較運算
var a1; //a1的值爲undefined
var a2 = null;
var a3 = NaN;
alert(a1 == a2); //顯示"true"
alert(a1 != a2); //顯示"false"
alert(a1 == a3); //顯示"false"
alert(a1 != a3); //顯示"true"
alert(a2 == a3); //顯示"false"
alert(a2 != a3); //顯示"true"
alert(a3 == a3); //顯示"false"
alert(a3 != a3); //顯示"true"
從上面的代碼能夠得出結論:(1)undefined與null是相等;(2)NaN與任何值都不相等,與本身也不相等。
Null 數據類型
在 Jscript 中數據類型 null 只有一個值:null。關鍵字 null 不能用做函數或變量的名稱。
包含 null 的變量包含「無值」或「無對象」。換句話說,該變量沒有保存有效的數、字符串、boolean、數組或對象。能夠經過給一個變量賦 null 值來清除變量的內容。
請注意,在 Jscript 中,null 與 0 不相等(與在 C 和 C++ 中不一樣)。同時應該指出的是,Jscript中 typeof 運算符將報告 null 值爲 Object 類型,而非類型 null。這點潛在的混淆是爲了向下兼容。
Undefined 數據類型
以下狀況使返回 undefined 值:
對象屬性不存在,
聲明瞭變量但從未賦值。
注意不能經過與 undefined 作比較來測試一個變量是否存在,雖然能夠檢查它的類型是否爲「undefined」。在如下的代碼範例中,假設程序員想測試是否已經聲明變量 x :
// 這種方法不起做用
if (x == undefined)
// 做某些操做
// 這個方法一樣不起做用- 必須檢查
// 字符串 "undefined"
if (typeof(x) == undefined)
// 做某些操做
// 這個方法有效
if (typeof(x) == "undefined")
// 做某些操做
考慮將 undefined 值與null作比較。
針對上面的判斷,若是變量 x 沒有定義的話 if (x == undefined) {...}會拋出exception:變量x未定義,這句判斷不會執行,可用try{...}catch(ex){...} 捕獲。
無論x是否已經定義,使用 if (typeof(x) == undefined) 都會判斷爲 false。
someObject.prop == null;
以下狀況時,比較的結果爲 true,
若是屬性 someObject.prop 包含 null 值,
若是屬性 someObject.prop 不存在。
要檢查一個對象屬性是否存在,能夠使用新的 in 運算符:
if ("prop" in someObject)
// someObject 有屬性 'prop'
在JavaScript中,null與undefined一度令人迷惑。下面的分析,有利於你更清晰的認知它(或者讓你更迷惑):
- null是關鍵字;undefined是Global對象的一個屬性
- null是對象(空對象, 沒有任何屬性和方法);undefined是undefined類型的值。試試下面的代碼:
document.writeln(typeof null); //return object
document.writeln(typeof undefined); //return undefined
- 對象模型中,全部的對象都是Object或其子類的實例,但null對象例外:
document.writeln(null instanceof Object); //return false
- null「等值(==)」於undefined,但不「全等值(===)」於undefined:
document.writeln(null == undefined); //return true
document.writeln(null === undefined); //return false
- 運算時null與undefined均可以被類型轉換爲false,但不等值於false: document.writeln(!null, !undefined); //return true,true document.writeln(null==false); //return false document.writeln(undefined==false); //return false