由于JavaScript是一種弱類型特性語言,定義變量的時候無需指定變量類型。因為在運算過程中會存在隱式轉換。
(1)比如 76+32 ,這個是數(shù)字運算,結果為108。但是如果改成“76”+32,那么結果就會變?yōu)?7632,對字符串進行拼接。但是如果改成“76”-32,那么結果就會變?yōu)?4,嘗試將字符串轉換為數(shù)字并對數(shù)字進行運算。
(2)巧用+/-轉換類型。如果希望將字符串轉換為數(shù)字,那么可以處理為(num-0)。如果希望將數(shù)字轉換為字符串,那么可以處理為(num+" ")。
(3)'1.23' == 1.23 這個是正確的。兩側為一邊是字符串一邊為數(shù)字時,會嘗試將字符串轉換為數(shù)字,再進行比較。
(4)a === b? ,“===”代表嚴格等于。
(5)嚴格等于會先判斷等號兩側的數(shù)據(jù)類型,類型不同直接返回false,類型相同類型相同,同===再比較內(nèi)容是否相同。
(6)嚴格等于比較的時候,數(shù)字比較值相同,字符串比較內(nèi)容和長度都相同。null === null, undefined === undefined 。NaN ≠ NaN,NaN和任何東西都不相等。new Object ≠ new Object,對象不是用值來比較,是用引用來比較,所以即使值相同,它們也不相等,因為他們不是相同的對象。
(7)" == "比較的時候,如果類型不同,嘗試類型轉換和比較:null == undefined 相等,number == string 轉number1 == “1.0" // true,boolean == ?轉number1 == true// true,object == number | string 嘗試對象轉為基本類型new String('hi') == ‘hi’ // true,其它:false。