天天看點

JavaScript中會列印出undefined的情況彙總

undefined,作為一種基本資料類型,在JavaScript中有時候不經意,就會列印輸出它。這裡,我做一個小小的總結:

  1. 變量聲明了的但是未初始化

在聲明變量的時候,如果沒有初始化變量,即給變量指派,那麼列印出

undefined

var a;
console.log(a);//undefined
           
  1. 給變量指派

    undefined

直接給變量指派一個undefined

var a = undefined;
console.log(a);//undefined
           
  1. 變量聲明提升傳回

    undefined

把列印語句寫在了聲明變量之前,由于變量聲明提前,就算指派了,也是

undefined

console.log(a);//undefined
var a = 1;
           
  1. 使用

    .

    通路對象中沒有的屬性

通路對象中的屬性時,如果對象中沒有對應的屬性,會列印

undefined

var obj = {};
console.log(obj.name);//undefined
           
  1. 函數中定義了形參,但是執行函數時沒有傳入實參

在我們的函數中,如果定義了形參,但是你執行的時候沒有傳入實參時,會

undefined

具體原因是因為a作為局部變量被聲明提前了。

function test(a){
	console.log(a);
}
test();//undefined
           
  1. 對象中的方法中的匿名函數的函數體為空

一個方法(函數)中如果它的函數體為空時,在調用時會傳回

undefined

var obj = {
	testFun:function(){}
};
console.log(obj.testFun());//undefined
           
  1. 列印函數的調用時,該函數的函數體為空

一個函數的函數體為空時,在列印它的調用時,列印出

undefined

function test(){};
console.log(test());//undefined
           
  1. 列印函數的調用時,函數體不為空

這裡test()相當于1,先列印1,然後console.log()在列印函數時,預設會列印傳回值,如果沒有設定傳回值,會傳回

undefined

function test(){
	console.log(1);
};
console.log(test());//1 undefined
           
  1. 函數作為傳回值時,其傳回值函數沒有設定傳回值

這裡test()調用自身,然後再()調用内部的傳回函數,列印出1,console.log()預設接受函數時會列印傳回值,如果沒有設定,會傳回

undefined

function test(){
	return function(){
		console.log(1);
	}
}
console.log(test()());// 1  undefined