標籤:題集 fine 構造 標準 ram 轉化 頁面 操作符 強制
1.
[]==[]
答案:false.
數組,在 Javascript 中是對象,對象使用 == 比較都是比較的引用。
簡單的說,就是,如果是同一個對象,就相等,如果不是同一個對象,就不等。
每次使用 [] 都是建立一個數組對象,所以 [] == [] 這個語句裡建了兩個資料對象,它們不等。
2.
[3.toString(),3..toString(),3...toString()]
答案:error,"3",error
Number中的toString(a),能夠將數值轉化成為a進位的值。但a預設時,預設轉化為十進位。
一般使用方法為:var n = 3;n.toString();
執行3.toString(),因為3隻是為數值型變數,為非Number執行個體,因此對於3不能直接調用Number方法。
而執行3..toString(),會強制將3轉化為數字執行個體,因此能夠被解釋,輸出3,同樣可以使用(3).toString()。
(補充說明:3.toString() 在群裡出的另外一道題裡有類似問題,字面量到底是不是執行個體能不能調用方法的問題,具體可看ecma標準。
而3..toString()之所以可執行,是因為在解析該句的時候,3與其後的第一個點解析人為 3.是個浮點數,轉換完成後toString().
)
3.
Array.isArray(Array.prototype)
答案:true
Array.prototype為[],Array.isArray(a)是一個判斷a是否為數組的方法。
判斷對象是否為數組的方法:
1)ES5函數isArray(),該函數測試對象的內部[[Class]]屬性是否為Array:
Arrray.isArray(a);
2)判斷對象的建構函式是否為Array:
a.constructor === Array
3)使用對象內部[[Class]]屬性建立結果字串:
Object.prototype.toString.call(a)
4)使用instanceof操作符測試對象是否繼承自Array:
(但由於,一個頁面的iframe不會繼承自另外一個頁面的iframe,該方法不可靠)
a instanceof Array。
4.
["1","2","3"].map(parseInt);
5.
var arr = Array(3);
arr[0] = 2
arr.map(function(elem){return ‘1‘;});
答案:其實四和五可以同時解答,關於map會往callback裡傳三個參數,callback能接收到幾個看callback的形參個數。
parseInt形參--兩個,map傳入的參數分別是 當前對應元素值,和對應元素index。
所以第四題,就可以看做parseInt(1,0),parseInt(2,1),parseInt(3,2);返回為數組。
第五題是關於數組元素沒有初始化的情況,map對於缺失元素直接返回undefined。
所以答案:"1",undefined*2
js題集7