前幾天社區的羣裏森破發了一個這樣的連接:javascript
http://ourjs.com/detail/52fb82e13bd19c4814000001java
作了一遍後忽然對人生感到了迷茫,本着不能只有我一我的傷心的原則,只要是程序員的好友我都發了一遍給他們答。程序員
最近亞馬遜書滿減,湊單買了本javascript實用代碼段的書,結果發現原來那個所謂八級測試的始做俑者就是這本··· 結果居然沒有答案···面試
遂以爲仍是整理一遍的好,加上以前本身的一些筆記,和一些擴展,寫個總結髮出來記錄一下。api
1,閉包
這東西無非是函數參數問題,記得住就答得出來,真沒什麼卵用。jsp
主要是parseInt的第二個參數,是解析數字的基數,也就是進制,範圍爲2~36。函數
好比這道題的第二個運行結果 就是 parseInt('2',1); 參數不符 故是NAN。測試
第二個運行結果 parseInt('3',2); 二進制裏沒有3,因此也是NAN。this
2
null,array的 typeof 都是object。
可是instanceof仍是很嚴謹的。
不過如下須要注意:
1. instanceof 是判斷前者是否爲後者的一個實例,因此
2.判斷一個變量的類型上面兩種都很差要用這個:
Object.prototype.toString.call(XXX).slice(8,-1);
3
這個就是新array api的熟悉啦,
reduce也支持兩個參數,arr.reduce(callback[, initialValue]) 第二個參數··· 就叫他迭代開始吧, arr和initialValue兩個參數不能同時爲空,上一道題就是同時爲空了。
連接裏給的答案解析是有一些小問題的。
4是操做符優先級問題,就不說了。
5
這道題涉及的東西是做用域和變量聲明。
javaScript是沒有塊級做用域的,只有函數做用域。因此
if(true){var hehe = 'hehe'}這樣寫是沒錯誤的。
由於做用域是同樣的,固然還有最關鍵的一點,就是js的提早聲明。
代碼等同於:
因此name是undefined;
6 js最大的數是2^53。
7 pass
8
js沒有精確的數值,是由於十進制在轉換爲計算機用二進制時候的丟失致使的。該死的js並無對這個偏差進行處理。
9,10
switch 用 === 進行枚舉,記住便可。
另外周同窗上次在社區 羣裏提到的:
=== 是不觸發toString的。
11 pass
12 同1
13 pass
14
if的判斷
==和if的判斷是不同的
好比 if(2) 是true,可是 2 == true 是false,由於在==時,是把布爾值轉換爲數字類型在進行比較,這個時候 true是1,因此在==時,只有1==true是 ture。
一樣的在if裏,數字類型只有0是false,由於其他的轉爲布爾類型是,都是true。
引用對象都爲true
小tips
1: 條件語句能夠用 && 代替 好比 a&& b 就是if(a) && b
2:別的語言喜歡把-1當作false,放在js裏,你能夠用 if(~flag) 來使-1返回false。
~是按位取反,按照取反再減一來運算,
好比你要判斷indexof
那麼 if(~xxx.indexof('x') ) 比 if(xxx.indexof('x') > -1) 漂亮的多。
15
不管是== 仍是=== 判斷的都是索引值。
=賦予的也是對象的索引,因此千萬不要 a=b=[] 這樣子賦值,會是噩夢的。
16
53和2,由於在遇到減號時,會先轉換爲數值類型。
那麼 3 + ‘5’ - 3是多少呢? 是32。
那若是咱們要字符串類型轉換爲數字類型呢?
+str 或者 str*1。
像上面那樣 str在中間,就儘可能用*1吧 、
17
我不明白,也沒找到··· 試了好多組數字,找到了點規律··· 可是依舊不明白爲何···
18 pass
19 arguments,嚴格模式下就不會被更改了。
相應的,還有一個全局變量undefined,在嚴格模式下也不會能夠被修改。
可是你依舊能夠用function undefined來修改。
有的閉包會傳一個undefined的參數,就是怕在全局被複寫了。
20,21,22,23,
pass
24
2.toString() 報錯是由於解析器把'.'解析爲了浮點數的'.'。因此若是你要用寫符合這種語義的代碼就要:
25
y是全局。
來點複雜的,還記得那三道面試題嗎?
答案是 100 10 100
由於
這裏還涉及到了一個做用域問題。
最後統一說一下吧。
一樣是聲明提早 因此 第一個alert是undefined。
這個最簡單其實,別被前兩個弄蒙就ok了。
26
記住便可
27同15
28,29, pass
30
function的name問題。
完整內容參見原文連接:http://www.gbtags.com/gb/share/5839.htm