1.typeof
對於原始型別來說,除了null 都可以顯示正確的型別判斷;
對於物件來說,除了函式(顯示 function)都會顯示 object。
2.instanceof 判斷物件的型別--因為內部機制是通過原型鏈來判斷的。(對於原始型別來說,想直接通過instanceof來判斷型別是行不通的)
3.型別轉換--在js中型別轉換只有三種情況,
轉換為布林值
轉換為數字
轉換為字串
轉boolean -- 在條件判斷時,除了undefined,null,false,nan,'',0,-0,其他所有值都是true,包括所有物件。
物件轉原始型別 -- 物件在轉換型別的時候,會呼叫內建的 [[toprimitive]] 函式,對於該函式來說,演算法邏輯如下
·如果已經是原始型別了,那就不需要轉換了,
·呼叫 x.valueof() ,如果轉換為基礎型別,就返回轉換的值;
·呼叫 x.tostring() ,如果轉換為基礎型別,就返回轉換的值;
·如果都沒有返回原始型別,就會報錯。
在重寫 symbol.toprimitive, 該方法在轉原始型別時呼叫優先順序最高。
四則運算符:
1.運算中其中一方為字串,那麼就會把另一方也轉換為字串。
2.如果一方不是字串或者數字,那麼會將它轉換為數字或字串。
3.另外對於表示式: 'a' + + 'b' // -> "anan"
因為 + 'b' 等於 nan, 所以結果是 "anan",
4.對於除了加法的運算子來說,只要其中一方是數字,那麼另一方就會被轉換為數字
4 * '3' // 12
4 * // 0
4 * [1,2] // nan
比較運算子
1.如果是物件,就通過 toprimitive 轉換物件
2.如果是字串,就通過 unicode 字元索引來比較
let a = ,
tostring()
}a > -1 // true
在以上**中,因為a是物件,所以會通過 valueof 轉換為原始型別在比較值。
面試題整理
2014.3.19日整理 1.建立一張表hack 裡面就乙個欄位num,然後用sql語句從1開始插入到100,怎麼寫?oracle 答 1.create tablehack num number 建表語句 2.begin for i in1.100loop insert intohack num v...
整理面試題
整理面試題 1 說說activity,intent,service是什麼關係 答 乙個activity 通常是乙個單獨的螢幕,每乙個 activity 都被實現為乙個單獨的類,這些類都是從 activity 基類中繼承而來的。activity 類會顯示由檢視控制項組成的使用者介面,並對檢視控制項的事...
面試題整理
static變數 全域性變數與區域性變數 靜態資料區 堆疊 heap和stack的區別 堆是由malloc之類的函式分配的空間位址由低向高增長 stack是自動分配變數位址由高向低 減少程式的記憶體分配 1.棧區 stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數的值等。其操作方式類似於...