|
|
|
|
|
使用Chrome瀏覽器控制臺調(diào)試程序時,經(jīng)常看到在運(yùn)行結(jié)果后有一行“undefined
”,一開始我還以為是程序問題,最后發(fā)現(xiàn)并不是。那么這個“undefined
”是從哪里來的呢?
本篇屬于不知道也不會怎樣的冷知識,但如果了解,你則會更清楚 JS 中的表達(dá)式概念。
如果要清楚的預(yù)測Chrome Console 中所出現(xiàn)的值,就一定要搞清楚「表達(dá)式」的概念,表達(dá)式的特征就是“一定會回傳值”,Chrome Console 中輸入程序代碼后的下一行呈現(xiàn)的正是回傳結(jié)果。
任何的純值都可以視為「表達(dá)式」,因此輸入純值運(yùn)行后的下一行回傳的結(jié)果就是該值。
1 // 這行只有數(shù)字 1
與表達(dá)式不同的「陳述式」最大的特征是“不會回傳值”,因此陳述式輸入在Chrome Console 后會帶出的是 undefined
的結(jié)果。
var
屬于聲明陳述式,因此不會回傳任何的結(jié)果。
var a = 1;
一樣的概念,if
是屬于陳述式,因此執(zhí)行結(jié)果為undefined
。
if (a === 1) { }
=
是屬于運(yùn)算符,運(yùn)算符同樣屬于表達(dá)式,因此會回傳一個值,結(jié)果會不同于上方的 var
的聲明陳述式。
a = 1;
當(dāng)Chrome Console 中輸入多行的代碼時,回傳的值會是以代碼中「排列最后的表達(dá)式」為主,因此:
a === 1;
a = 2; // 回傳此表達(dá)式結(jié)果
var a = 1; // 此為陳述式,因此跳過
函數(shù)式運(yùn)行是屬于表達(dá)式的一種,因此 <·
會帶出函數(shù)式中return
的值。
function fn() {
return 'function';
}
fn();
如果函數(shù)式中沒有 return
一個指定的結(jié)果,函數(shù)式運(yùn)行依然是屬于表達(dá)式,它則會帶入undefined
的值。
function fn1() {
}
fn1();
console.log
語法會直接在Chrome Console 中印出指定表達(dá)式的結(jié)果,與直接輸入在Chrome Console 中的回傳不同,在呈現(xiàn)的結(jié)果前方不會有 <·
符號,僅會以空白的方式呈現(xiàn)。
console.log(1)
本文介紹了Chrome Console 中的undefined
出現(xiàn)的原因,了解這個,你可能會更進(jìn)一步了解JS中的陳述式和表達(dá)式的概念。
相關(guān)文章