[問題] js型態轉換問題

看板Ajax作者 (老子我最神)時間10年前 (2014/06/04 12:28), 編輯推噓4(403)
留言7則, 5人參與, 最新討論串1/3 (看更多)
大家好,這幾天再看一些 javascript 的東西 雖然我頁面的javascript都用的順順的... 但是有些觀念真的是超級難以理解... 舉一個例子... 在型態轉換這方面... > 2 + 3 + '4' 54 可以理解成 2 + 3 = 5, 5 + '4' 時 5會被轉成 String '5' 這沒問題 可以想成 number + String 會被轉成 String 而 true 跟 false 的 boolean 轉換規則 true 代表 1,false 代表 0 所以會有以下例子 >false == 0 true >5==true false 這也沒問題 另外還有一個規則就是"除了0、NaN、''、null、undefinied是假的(false)之外,其它 都是真的(true)。" 這也可以想像... 不過細節部分就很模糊了... 例如 >false == 0 true 他到底是把 false 轉成 0,還是把 0 轉成 false ? 是否跟位置有關? 以下就是一個 WTF > typeof null 'object' > 0==null false >1+null 1 經過書本或網路上有看過 'object' 做運算或比較會先呼叫 valueof 方法,若沒有 valueof方法則呼叫 toString 方法 > 0==null false 所以可能代表 null 不能轉成 0 (透過 valueof 或 toString) 可是 1+null = 1 null 又被轉成 0 了........???????? 以下更 WTF >null == undefined true >1+null 1 >1+undefined NaN 到底是怎麼轉的.... 而且 > typeof undefined undefined >typeof null object 那 null == undefined 到底是轉成甚麼鬼東西? 在良葛格型態轉換章節最後有提到一句 "在弱型別語言中,型態轉換往往自動發生,最好還是實際測試了解結果, 避免不必要的型態轉換而發生誤判或錯誤的運算結果。" 意思難道是說 "我根本不知道在型態轉換到底是怎麼轉的,反正測測看就知道了" ? 並不是要嗆良葛格的意思... 但是在型態轉換中 java 語言可以清晰清楚地寫出轉換規則及邏輯 而 javascript 卻是說 測測看結果 ? 更怪的是這個 > typeof null; object > null instanceof Object; false 我在看 javascript 書時也常常出現 "這很怪", "這沒規範", "這樣寫在某些地方可以執 行" 而且還把js稱作 "bug叢生的javascript" (by 駕馭javascript的68個具體作法) 雖然我覺得我根本不瞭解js,不過我在web頁面仍然可以寫出可以跑得 js 或 jquery 我仍然可以套用 jquery UI , 寫 Ajax, 使用 js 做基本客戶端互動介面。 對各位而言,javascript 是一個怎麼樣的語言? 不知道是我根本沒搞懂js,還是js本身就是一個不想讓人懂的語言? 型態轉換有沒有一個具體的邏輯可以來講解? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.218.64.133 ※ 文章網址: http://www.ptt.cc/bbs/Ajax/M.1401856122.A.9AF.html

06/04 12:34, , 1F
不要鑽牛角尖= =
06/04 12:34, 1F

06/04 12:35, , 2F
JS當然也會有一個轉換的標準方式阿 只是沒關心罷了
06/04 12:35, 2F

06/04 12:40, , 3F
ecma 規範裡都有寫啊
06/04 12:40, 3F

06/04 17:06, , 4F
NaN != NaN 才叫做 WTF
06/04 17:06, 4F

06/04 17:20, , 5F
不是一個數字 不等於 不是一個數字,很奇怪嗎?
06/04 17:20, 5F

06/04 18:04, , 6F
寫coffeescript阿XD
06/04 18:04, 6F

06/05 15:10, , 7F
JavaScript 是 Web 時代的組語...
06/05 15:10, 7F
文章代碼(AID): #1JZg1wcl (Ajax)
文章代碼(AID): #1JZg1wcl (Ajax)