iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
0
自我挑戰組

邁向 JavaScript 核心之路 系列 第 3

[Day 3] JavaScript 語法介紹 - 型別 ( 2 ) 與 布林值

  • 分享至 

  • xImage
  •  

undefined & null

  • null 是一種 沒有值 的值
  • null 的類型是 object ( typeof )
  • JavaScript 變數的預設值為 undefined
  • JavaScript 不會主動賦予 Null 值,除非開發者自己去定義
  • undefined 不能使用在 JSON 資料格式
  • undefined 是指已經宣告但還沒賦予任何的值
  • undefined 的類型是 undefined ( typeof )
  • undefined 和 null 都屬於 falsy ( 等價於 false )
  • 使用未定義的變數會引發例外錯誤,而使用 undefined 的變數則不會

typeof null 為 object 是當初設計上的錯誤,因此將錯就錯沿用至今。

    var empty; // 先設定一個變數,但不賦予值
    
    console.log(empty); // undefined
    
    empty = null; // 賦予一個 null 值
    
    console.log(empty); // null
    
    console.log(typeof empty); // object

接下來讓我們來比較一下 undefined 和 null

    console.log( undefined == null ); // true
    
    console.log( undefined === null ); // false

是不是覺得很疑惑,為什麼第一個結果會是 True ,但第二個結果會是 False ?

因為 Null 與 Undefined 皆為 Falsy 值,所以回傳 True,且依據 ECMAScript 的標準,當 == 兩邊為 undefined 與 null 即回傳 true。

這邊因為用三個等號,所以會去比較他們的型別,所以為 false,且依據 ECMAScript 的標準,當 === 左右兩邊分別為 undefined 與 null 即回傳 null。

Truthy & Falsy

在JS中有許多數值放在邏輯判斷中其結果等價於 true 。但其數值並非 true,因此,我們叫這類數值為 truthy ,而 falsy 也是同理。

那我們該如何判斷呢?

    if ( 想要檢測的值 ) {
        // 此值為 truthy
    } else {
        // 此值為 falsy
    }

當然我們可以再把檢測的方式再簡化

    console.log(Boolean("")); // false 意味者空字串等價於 falsy
    console.log(!!""); // false 兩個驚嘆號 等同於 Boolean()

有時候有些朋友會把一個驚嘆號或兩個驚嘆號搞混,在這邊稍為提醒一下,一個驚嘆號是把值反轉,例如 !true 就是 false,反之亦然。

參考資料: Tommy - 深入 JavaScript 核心課程
ECMAScript
JS Comparison Table


上一篇
[Day 2] JavaScript 語法介紹 - 型別系統
下一篇
[Day 4] JavaScript 語法介紹 - function arguments
系列文
邁向 JavaScript 核心之路 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言