iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Modern Web

每日挑戰,從Javascript面試題目了解一些你可能忽略的概念系列 第 7

每日挑戰,從Javascript面試題目了解一些你可能忽略的概念 - Day7

tags: ItIron2021 Javascript

作者碎碎念

沒注意到昨天發錯文章了..把Day7當Day6發 今天重新補發一次

前言

前三天我們都在講提升,我相信你一定也厭煩了,別擔心,那玩意不會再出現了?
有些比較重要的概念通常會有2~3題的複習機會,若你認為該概念你早就完全摸熟了,通常在前言的部分你可以看到今天的主題,發現已經熟練的就直接跳過就好囉!
今天讓我們來看看新的主題吧!

本日題目與解釋

請你解釋undefined, null & not defined的差別

老樣子,來張防雷圖讓你好好思考一下這個看似奇妙的問題

thinking-cat

這也是個很容易讓人覺得好像很簡單但卻又沒辦法講出個所以然的題目,但其實它真的很簡單! 首先我們都可以輕易地回答出第一點

  • not defined表示該變數未被定義

比方說你今天隨便在你的編輯器上執行以下的程式碼,就會看到熟悉的錯誤訊息囉!

console.log(DannyWang) // Uncaught ReferenceError: DannyWang is not defined

接著就是比較null & undefined的差別了,這個也很單純,最主要的差別就在於是否被賦值而已!

  • null表示該變數是個空值、undefined則表示該變數雖宣告但未被賦值

null雖然是空值,但還是個值,表示這變數已被宣告、且已被賦值,undefined則清楚的表示這玩意未被賦值,同樣看個簡單的例子吧!

let dannyWang

console.log(dannyWang) // undefined

但這並不是唯一的差別,他們在變數型別也有所不同

  • When it comes to typeof....
console.log(typeof undefined) // undefined
console.log(typeof null) // object
console.log(typeof WangDanny) // undefined

undefined的型別為undefined、null的型別為object,這兩點你可能都不意外,但第三個玩意可能會讓你有點驚訝。未定義的變數會被typeof判別為undefined,但實際上這個變數未曾宣告過,這點要多注意,表示你並不能用typeof === 'undefined'去辨別某變數是否被宣告過。

本日核心觀念與總結

核心觀念

null vs undefined

總結

  • not defined表示該變數未被定義
  • null表示該變數已宣告且已被賦值,只是是個空值
  • undefined表示該變數已宣告但尚未被複值
  • 未定義的變數無法用typeof確認

本文章同步發布於個人部落格,有興趣的朋友也可以來逛逛~!


上一篇
每日挑戰,從Javascript面試題目了解一些你可能忽略的概念 - Day6
下一篇
每日挑戰,從Javascript面試題目了解一些你可能忽略的概念 - Day8
系列文
每日挑戰,從Javascript面試題目了解一些你可能忽略的概念30

尚未有邦友留言

立即登入留言