undefined,作為一種基本資料類型,在JavaScript中有時候不經意,就會列印輸出它。這裡,我做一個小小的總結:
- 變量聲明了的但是未初始化
在聲明變量的時候,如果沒有初始化變量,即給變量指派,那麼列印出
undefined
。
var a;
console.log(a);//undefined
- 給變量指派
undefined
直接給變量指派一個undefined
var a = undefined;
console.log(a);//undefined
- 變量聲明提升傳回
undefined
把列印語句寫在了聲明變量之前,由于變量聲明提前,就算指派了,也是
undefined
console.log(a);//undefined
var a = 1;
- 使用
通路對象中沒有的屬性.
通路對象中的屬性時,如果對象中沒有對應的屬性,會列印
undefined
var obj = {};
console.log(obj.name);//undefined
- 函數中定義了形參,但是執行函數時沒有傳入實參
在我們的函數中,如果定義了形參,但是你執行的時候沒有傳入實參時,會
undefined
。
具體原因是因為a作為局部變量被聲明提前了。
function test(a){
console.log(a);
}
test();//undefined
- 對象中的方法中的匿名函數的函數體為空
一個方法(函數)中如果它的函數體為空時,在調用時會傳回
undefined
var obj = {
testFun:function(){}
};
console.log(obj.testFun());//undefined
- 列印函數的調用時,該函數的函數體為空
一個函數的函數體為空時,在列印它的調用時,列印出
undefined
function test(){};
console.log(test());//undefined
- 列印函數的調用時,函數體不為空
這裡test()相當于1,先列印1,然後console.log()在列印函數時,預設會列印傳回值,如果沒有設定傳回值,會傳回
undefined
。
function test(){
console.log(1);
};
console.log(test());//1 undefined
- 函數作為傳回值時,其傳回值函數沒有設定傳回值
這裡test()調用自身,然後再()調用内部的傳回函數,列印出1,console.log()預設接受函數時會列印傳回值,如果沒有設定,會傳回
undefined
。
function test(){
return function(){
console.log(1);
}
}
console.log(test()());// 1 undefined