JS中NaN、NULL、undefined、詳解

NaN:保留字(表明數據類型不是數字)

undefined:對象屬性或方法不存在,或聲明瞭變量但從未賦值。

即當你使用了對象未定的屬性或者未定義的方法時或當你聲明一個變量,但你確從未對其進行賦值,便對其進行操作(當然賦值除外),會有"undefined"提示


null 值指出一個變量中沒有包含有效的數據。產生 null 的原因是:

對一個變量顯式地賦值爲 null。
包含 null 的表達式之間的任何操作。


Boolean 表達式

一個值爲 true 或者 false 的表達式。如果需要,非 Boolean 表達式也可以被轉換爲 Boolean 值,但是要遵循下列規則:

所有的對象都被當作 true。
當且僅當字符串爲空時,該字符串被當作 false。
null 和 undefined 被當作 false。
當且僅當數字爲零時,該數字被當作 false。

字符串比較

兩個字符序列之間的比較。除非在進行比較操作的函數中指出,所有的字符串比較操作都是二進制的。在英語中,二進制比較區分大小寫;而文本比較則不區分。

數值表達式

數值表達式指的是任何值爲數字的表達式。這種表達式的元素可以包括關鍵字、變量、文字和運算符的任意組合,只要此組合能夠生成一個數字。在特定的情況下,如果可以的話,字符串也可以被轉換爲數字。

構造函數

一種 JScript 函數,具有兩個特殊的性質:

由 new 運算符來調用此函數。
通過 this 關鍵字將新創建對象的地址傳遞到此函數。
強列建議使用構造函數來初始化新的對象。

ASCII 字符集

美國標準信息交換編碼 (ASCII) 的 7 位字符集,它被廣泛地用來表示標準的美國鍵盤上的字母和符號。ASCII 字符集與 ANSI 字符集中的頭 128 個字符 (0–127) 完全相同。

Automation 對象

通過 Automation 接口可以被其他應用程序或編程工具使用的對象。

全球標準時間 (UTC)

全球標準時間指的是由世界時間標準設定的時間。原先也被稱爲格林威治標準時間或者 GMT。

Jscript 有三種主要數據類型、兩種複合數據類型和兩種特殊數據類型。

主要(基本)數據類型是:

字符串
數值
布爾

複合(引用)數據類型是:

對象
數組

特殊數據類型是:

Null
Undefined

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做比較。

someObject.prop == null;

如下情況時,比較的結果爲 true,

如果屬性 someObject.prop 包含 null 值,
如果屬性 someObject.prop 不存在。

要檢查一個對象屬性是否存在,可以使用新的 in 運算符:
if ("prop" in someObject)
// someObject 有屬性 'prop'

發佈了163 篇原創文章 · 獲贊 13 · 訪問量 119萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章