眾所周知,Undefined是JS語言中的7大基本類型之一,表示未定義,它的值只有一個,就是undefined。任何變量在賦值前都是undefined。
而在一些框架源碼中,會出現一些這樣的表達式:
if (context === void 0) return func;
function foo() {
var a = arguments[0] !== (void 0 ) ? arguments[0] : 2; return a;
}
if (array == null) return void 0;
1. undefined是可變的?
在ES5的全局環境中,undefined是只讀的。而在局部作用域中,undefined是可變的。這個是JS語言公認的設計失誤之一。
2. 什么是void?
void是一元運算符,出現在操作數的左邊,操作數可以是任意類型的值,void右邊的表達式可以是帶括號形式(例如:void(0)),也可以是不帶括號的形式(例如:void 0)。
3. 使用void 0代替undefined的原因是?
① 使用void 0比使用undefined能夠減少3個字節
>"undefined".length 9 >"void 0".length 6
② undefined並不是javascript中的保留字,我們可以使用undefined作為變量名字,然后給它賦值。void 0輸出唯一的結果undefined,保證了不變性。
4. undefined與null的區別?
null代表空值,代表“定義了但是為空”。而undefined的代表未定義。
