JavaScript--不常見的應用面試
1. Null與Undefinedexpress
接觸過JavaScript的都知道,JS中的數據類型有6種,包括5種簡單數據類型:Undefined,Null,Boolean,Number和String,還有一種複雜數據類型——Object,下面就先說一下null與Undefined。編程
Undefined類型只有一個值,即特殊的undefined,在使用var聲明變量但未對其加以初始化的時候,這個變量的值就是undefined,例如:var message; alert(message); //undefined
編程語言
Null類型一樣也是隻有一個值的數據類型,這個特殊的值是null。從邏輯角度來看,null值表示一個空對象指針,而這也正是使用typeof操做符檢測null值時會返回"object"的緣由。 實際上,undefined值是派生自null值的,所以對他們進行相等性測試的時候會返回true:alert(null == undefined);//true ,因此,當面試題裏出現null與undefined比較的時候不要再填false了奧~函數
2. NaN (Not a Number)測試
NaN是一個特殊的數值,這個數值用於表示一個原本要返回數值的操做數未返回數值的狀況。聽不懂?那就來舉個例子吧。 在其餘的編程語言中,任何數值除以0都會致使錯誤,從而中止代碼運行,但在ECMAScript中,任何數值除以0會返回NaN,所以不會影響其餘代碼的執行。url
NaN自己有兩個不一樣尋常的特色:首先,任何涉及NaN的操做(例如NaN/10)都會返回NaN,這個特色在多布運算中可能會致使問題;其次,NaN與任何值都不相等,包括NaN自己。當在面試題中出現例如: alert(NaN == Nan);時,果斷寫上false就能夠了。spa
那NaN用起來豈不是得當心翼翼?針對這兩個特色,ECMAScript定義了isNaN函數。這個函數接受一個參數,該參數能夠是任意類型,而函數能夠幫咱們確認該參數是否「不是數值」。isNaN在接受到一個值後,會嘗試將其轉換爲數值,若不能將其轉換爲數值則返回true,不然返回false。指針
例如:alert(isNaN(NaN)); //true alert(isNaN(10)); //false alert(isNaN("10")); //false alert(isNaN("blue")); //true alert(isNaN(true)); //false 注:true能夠被轉換爲1對象
3. 全等與不全等 === 與 !==
在JavaScript中,相等與不等操做符會在執行比較前,先將對象轉換成類似的類型(一般稱爲強制類型轉換),而後在比較它們的相等性。而全等與不全等只有在操做數未通過轉換就相等的狀況下才會返回true。
以下面例子: var result1 = ("55" == 55);//true var result2 = ("55" === 55);//false
4. with語句
with語句的做用是將代碼的做用域設置到一個特殊的對象中。具體語法以下: with (expression) statement
定義with語句的主要目的是爲了簡化屢次編寫同一個對象的工做,以下面的例子所示: var qs = location.search.substring(1); var hostName = location.hostname; var url = location.href; 上面幾行代碼都包含location對象。若是使用with語句,能夠把上面的代碼改寫成以下所示:
with(location){ var qs = search.substring(1); var hostName = hostname; var url = href; } 重寫後的例子中,使用with語句關聯了location對象。這意味着在with語句的代碼塊中,每一個變量首先被認爲是一個局部變量,而若是在局部環境中找不到該變量的定義,就會查詢location對象中是否有同名的屬性。若是發現同名屬性,則以location對象屬性的值做爲變量的值。
本人剛開始接觸JS,歡迎你們補充指導~~