→ carylorrk: 第二題很有趣,在 C 裡面因為是 undefined behavior 11/11 07:58
→ carylorrk: 沒錯(在sequence point 前同一個變數被 expression 改 11/11 08:00
→ carylorrk: 了兩次。) 但是我記得 javascript 的標準有規定運算順 11/11 08:00
→ carylorrk: 序(由左至右),所以主管說的沒有錯。 Java 的行為也 11/11 08:01
→ carylorrk: 是。更有趣的是實際上你的是正確的,因為不是所有實作 11/11 08:02
→ carylorrk: 都符合 ECMA 標準,記得有人說過不要太依賴標準XD 11/11 08:03
→ carylorrk: 第三題空白真的很可惜,最簡單的 IIFE、jquery的優缺點 11/11 08:06
→ carylorrk: 到一些常見的 design pattern 在 JS 裡的形態 11/11 08:06
→ carylorrk: (ex:decorator、observer)都可以說。 11/11 08:08
推 carylorrk: 就算你沒有寫過像是 backbone 或 angular,大學總學過 11/11 08:14
→ carylorrk: 有掰有分數吧XDD 11/11 08:14
→ carylorrk: 至於第一題我贊同你的說法。「我認為」第一,這個效能 11/11 08:15
→ carylorrk: 不重要。第二,既然說到轉換,就應該在相同的標準(或 11/11 08:17
→ carylorrk: 說是語義)下比較。以相同語義的情況下來說,比較相同 11/11 08:17
→ carylorrk: 形態時我不覺得他們會有效能差(因比較的步驟都一樣) 11/11 08:18
→ carylorrk: 比較不同形態且需要 coercion 時說不定 == 還比較快點 11/11 08:21
→ carylorrk: 要兩者語義完全相等的情況下來比纔有意義。很重要所以 11/11 08:23
→ carylorrk: 說三遍。XD 11/11 08:23
謝謝 carylorrk 的講解
第一題 有點不懂 如果 === 兩邊型態不同 比都不用比直接 return false
所以不管怎樣都是 === 快不是嗎??
第二題 我也用 C 的觀點去看 原來 js 標準不一樣!!!
推 mrbigmouth: 雖然==跟===的差距可能極小 但用===可以更早的突顯錯 11/11 09:11
→ mrbigmouth: 誤 不讓引擎自動做些怪事 所以能用===還是用===較好 11/11 09:12
→ mrbigmouth: 很多javascript書籍都有提到這點 11/11 09:12
→ mrbigmouth: 當a==0時 a可以是"0"可以是false可以是"" 11/11 09:15
→ mrbigmouth: 這會造成日後維護程式碼的各種不方便跟誤解 11/11 09:16
→ carylorrk: 所以我們是因為語義差別,而不是效能差別才選用 == 11/11 10:48
→ carylorrk: *才不選用 == XD 11/11 10:48
推 onininon: 這三題我大概也全錯XDDD 11/11 11:26
→ mmis1000: 一般而言只會用在 == null來偵測未定義變數吧? 11/11 11:33
→ mmis1000: 因為 == null 可以是 null 或 undefined,剛好都是空值 11/11 11:34
推 davidsky: 第一題是要考你是否習慣用===,但他的理由很怪 11/11 11:52
沒錯 沒事盡量用嚴謹的 ===
http://goo.gl/rX4wkd
看完這篇發現 只用 == 太可怕了 甚麼怪事都有
→ davidsky: 第二題我也認為沒啥意義 11/11 11:53
→ davidsky: 第三題就很重要了,不過你竟然空白... 11/11 11:53
第三題 我太弱 怕裝懂被問倒...
※ 編輯: xxxx9659 (220.129.195.251), 11/11/2014 13:43:42
→ carylorrk: 我的意思是指兩個目的一樣且預期拿到結果一樣的東西才 11/11 14:34
→ carylorrk: 能比較速度。像是在學資料結構,大家都知道 hash map 11/11 14:35
→ carylorrk: 和 rb-tree map 的差別,當你只需要 access 單 element 11/11 14:37
→ carylorrk: 時當然是 hash map 快,但是當你的需要是可以 access 11/11 14:38
→ carylorrk: 單一 elemnt,然後又可以 iterate 整個 map 並拿到排序 11/11 14:38
→ carylorrk: 過的 (key, value) pairs,那顯然就是要 tradeoff 了 11/11 14:39
→ carylorrk: 你如果用 hash map,可能就要歷遍整個 map 然後再排序 11/11 14:40
→ carylorrk: 同樣的,當你預期的結果是 x == null 的話,用 === 11/11 14:41
→ carylorrk: 你可能需要多次比較 (undefined、NaN 等等)或是 11/11 14:42
→ carylorrk: explicit 的轉型。只有這樣的比較纔是公平的。 11/11 14:42
→ carylorrk: == 和 === 雖然相似,但是語義上根本不同。沒有限定使 11/11 14:45
→ carylorrk: 用情景就直接問,顯然無法直接回答。 11/11 14:46
→ bndan: 其實第2題在執行上有一個小概念還不錯 @@ 由其是習慣一行程 11/11 18:38
→ bndan: 式解問題的人... 11/11 18:38
推 mmis1000: 除非就算塞在一行也不會造成語意混淆,我實在不覺得把c 11/11 19:11
→ mmis1000: ode塞在一行可以接受,每次看到那種code都讓我很想砍 11/11 19:11
→ mmis1000: 作者,別人力壓縮混淆code阿… 11/11 19:11
→ carylorrk: 推樓上,要壓縮用 grunt 就好(誤 11/12 09:28
推 oToToT: 怎麼辦我都自己寫code結果沒人看得懂,明明就很淺白啊,不 11/13 22:19
→ oToToT: 然其實有時候我也會寫太長QQ造成閱讀困難 11/13 22:20