簡單的來說在JacaScript中的邏輯比較子不是嚴謹模式的時候,JacaScript會貼心 (欠揍) 的幫你轉換成同的的型別再進行比較。
例如
console.log('1'==1);//true
console.log(''==false);//true
console.log([]==false);//true
console.log('0'==0);//true
console.log('0'==false);//true
看到上面的範例是不是覺得JacaScript很貼心 (欠揍) 阿
什麼鬼?! 強制轉型就轉型,還分顯性、隱性,又不是在做豌豆雜交實驗。
1.顯性(explicit)就是使用語法直接轉型
例如
let a = '123';
console.log(Number(a) ,typeof Number(a))//123 number
let b = false;
console.log(String(b) ,typeof String(b))//false string
用語法把字串123轉型為數字與false布林轉成字串就叫做顯性(explicit)轉型
2.隱性(implicit)就是JS"貼心的"幫你轉型
例如
console.log("1"==false)//fales
console.log("1"==1)//ture
console.log(""==false)//ture
console.log("0"==false)//ture
console.log("" || false)//false
console.log("" && false)//""
只要不是自己主動使用語法轉型的都是隱性(implicit)轉型
"1"自動轉型成布林true,再與false做比較。
"1"自動轉型成number 1,再與1做比較。
""自動轉型成布林 false,再與false做比較。
"0"自動轉型成布林 false,再與false做比較。
"" 碰到邏輯運算子 自動轉型為false布林,再進行邏輯運算。
"" 碰到邏輯運算子 自動轉型為false布林,再進行邏輯運算。
注意
自動轉型只會發生在非嚴謹模式,簡單的來說只會再 == 兩個等號才會幫你自動轉型
在第二家生技公司滿四年沒多久之後,由於產品的準確率、自動化、測量時間都無法達到商用需求,只能走實驗測試,然後透過高階健檢中心推服務,只能透過這種法律灰色地帶的方法獲利,此時部門的人只剩下我與主管,沒過兩個月後連主管都離職啦,這個時候老闆才把我叫進辦公室說要幫我加薪2000元,從26990過四年才加2000,要暫時接下所有事情,反正我也看破了不想待了,經過朋友的介紹跑去面試了醫生助理的工作,工作內容大概是幫忙做做實驗打打雜的,一切都談得不錯,包含薪水啦、工作內容啦、進修的機會啦、到職日期啦等等...,就在我以為事情往好的地方前進的時候,不意外的是要發生意外啦,由於要入職的是一家大醫院,大家都知道大醫院的入職手續與體檢都很花時間,都不可能在一周之內完成。