技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營(yíng)

贊助商

分類目錄

贊助商

最新文章

搜索

Chrome Console運(yùn)行結(jié)果后出現(xiàn)的undefined是什么意思?

作者:admin    時(shí)間:2022-7-5 10:30:58    瀏覽:

使用Chrome瀏覽器控制臺(tái)調(diào)試程序時(shí),經(jīng)??吹皆谶\(yùn)行結(jié)果后有一行“undefined”,一開(kāi)始我還以為是程序問(wèn)題,最后發(fā)現(xiàn)并不是。那么這個(gè)“undefined”是從哪里來(lái)的呢?

 

本篇屬于不知道也不會(huì)怎樣的冷知識(shí),但如果了解,你則會(huì)更清楚 JS 中的表達(dá)式概念。

Console 回傳的結(jié)果與表達(dá)式有關(guān)

如果要清楚的預(yù)測(cè)Chrome Console 中所出現(xiàn)的值,就一定要搞清楚「表達(dá)式」的概念,表達(dá)式的特征就是“一定會(huì)回傳值”,Chrome Console 中輸入程序代碼后的下一行呈現(xiàn)的正是回傳結(jié)果。

純值

任何的純值都可以視為「表達(dá)式」,因此輸入純值運(yùn)行后的下一行回傳的結(jié)果就是該值。

1 // 這行只有數(shù)字 1

 

陳述式

與表達(dá)式不同的「陳述式」最大的特征是“不會(huì)回傳值”,因此陳述式輸入在Chrome Console 后會(huì)帶出的是 undefined 的結(jié)果。

var屬于聲明陳述式,因此不會(huì)回傳任何的結(jié)果。 

var a = 1;

 

一樣的概念,if是屬于陳述式,因此執(zhí)行結(jié)果為undefined。

if (a === 1) { }

 

=是屬于運(yùn)算符,運(yùn)算符同樣屬于表達(dá)式,因此會(huì)回傳一個(gè)值,結(jié)果會(huì)不同于上方的 var 的聲明陳述式。 

a = 1;

 

多行代碼

當(dāng)Chrome Console 中輸入多行的代碼時(shí),回傳的值會(huì)是以代碼中「排列最后的表達(dá)式」為主,因此:

  • 當(dāng)有多個(gè)表達(dá)式,會(huì)回傳最后一個(gè)表達(dá)式
  • 如果最后一個(gè)是陳述式,則會(huì)跳過(guò)僅回傳表達(dá)式 
a === 1;
a = 2; // 回傳此表達(dá)式結(jié)果
var a = 1; // 此為陳述式,因此跳過(guò)

 

函數(shù)式

函數(shù)式運(yùn)行是屬于表達(dá)式的一種,因此 會(huì)帶出函數(shù)式中return 的值。

function fn() {
  return 'function';
}
fn();

 

如果函數(shù)式中沒(méi)有 return 一個(gè)指定的結(jié)果,函數(shù)式運(yùn)行依然是屬于表達(dá)式,它則會(huì)帶入undefined的值。

function fn1() {
}
fn1(); 

 

console

console.log語(yǔ)法會(huì)直接在Chrome Console 中印出指定表達(dá)式的結(jié)果,與直接輸入在Chrome Console 中的回傳不同,在呈現(xiàn)的結(jié)果前方不會(huì)有 符號(hào),僅會(huì)以空白的方式呈現(xiàn)。

console.log(1)

 

總結(jié)

本文介紹了Chrome Console 中的undefined出現(xiàn)的原因,了解這個(gè),你可能會(huì)更進(jìn)一步了解JS中的陳述式和表達(dá)式的概念。

相關(guān)文章

標(biāo)簽: Console  Chrome  undefined  
x