上個月面試一家公司出的 javascript 考題
其中有幾題很有趣 列出來跟大家討論
1. === 跟 == 這兩個運算元誰比較快?
a. === 快
b. == 快
c. 一樣快
d. 不一定 看狀況
我寫 a
但是後面註解 //有人在管 js 的低階運算效能嗎??!! 根本一樣快吧...
後來主管說服我說 == 要多做一次形態轉換 所以比較慢
2.
var ary = [];
for(var i = 0; i < 10; ary[i++] = i);
alert(ary); //顯示為何?
a. 0,1,2,3,4,5,6,7,8,9
b. 1,2,3,4,5,6,7,8,9,10
c. 語法錯誤 當掉
d. 不一定 看狀況
這題我寫 a
但我後面註解 //實際上這是 "未定義行為" 任何後果都有可能 要看js引擎的實作
但是主管很肯定答案是 b
他覺得 i++ 先取值再+1 而且取完值後 一定在中括號內就作完 +1 的動作
3. 寫出你有用過的 pattern 跟 framework 並簡單介紹
這題我空白...
雖然主管只是想測試我反應 考試答案正不正確不是重點
但是我還是想知道 這幾題有沒有更好更正統的解釋?