iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 11
0
conditionA = ""

if( conditionA ) {
 console.log("hello");
}

//無解果 undefined


conditionB = "hello"

if(conditionB) {
  console.log("hello");
}
//結果:VM294:3 hello

思考:
在條件判斷中,為什麼 conditionA 不會通過條件判斷?

在條件判斷式中,我們需要得到一個 true 或 false,才能去判斷接下來要不要執行裡面的程式,但如果裡面不是一個單純的比較,是一個物件或者其他東西,會發生什麼事情?

從 JS 的強制轉型講起,看以下程式碼

var a = 42;

var b = a + ""; //隱含的強制轉型
var c = String( a ); //明確的強制轉型

console.log(b)
console.log(c)

//b結果: 42
//c結果: 42

當我們的操作不符合正常狀況時, JS 語言會幫我們進一步處理,回到我們條件判斷,我們應該餵予一個 Boolean 值,或一個得出 Boolean 值的比較,但如果是其他的東西, JS 會幫我們進行強制轉型,而要變為 Boolean 的 true 或 false 就是用所謂的 Truthy 值或 Falsy 值去判斷。那我們現在給的東西是哪一種值呢?

其實可以很簡單,除了以下 Falsy 的,都是 Truthy 的
  • undefined
  • null
  • false
  • +0、-0,以及NaN
  • ""

最上面的例子,其實常常用在判斷是否為空值時的判斷,我們也可以寫成以下,去判斷資料是否為空。

conditionA = ""

if( !conditionA ) {
 console.log("目前沒有值");
}

另外,使用三元運算式,將我們原本的程式改寫成更簡潔的狀態。

語法:
判斷式 ? 如果符合 : 如果不符合

以下改寫:

conditionA = ""

!conditionA ? console.log("目前沒有值") : console.log(conditionA)

//結果:目前沒有值

conditionA = "Hello"

!conditionA ? console.log("目前沒有值") : console.log(conditionA)

//結果:hello

上一篇
一個 JS 學習者的日常 day9
下一篇
一個 JS 學習者的日常 day11
系列文
一個 JS 學習者的日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言