if (!Array.prototype.map) {
Array.prototype.map = function(callback, thisArg) {
var T, A, k;
if (this == null) {
throw new TypeError(" this is null or not defined");
}
var O = Object(this);
var len = O.length >>> 0;
// 3.如果callback不是函数,则抛出TypeError异常.
if (Object.prototype.toString.call(callback) != "[object Function]") {
throw new TypeError(callback + " is not a function");
}
if (thisArg) {
T = thisArg;
}
A = new Array(len);
k = 0;
while(k < len) {
var kValue, mappedValue;
if (k in O) {
kValue = O[ k ];
mappedValue = callback.call(T, kValue, k, O);
A[ k ] = mappedValue;
}
k++;
}
return A;
};
}
var len = O.length >>> Apakah tujuan operator bit di sini
Pemahaman peribadi:
Oleh kerana walaupun kaedah peta ini adalah pada prototaip Array, apabila ia sebenarnya dipanggil, ini tidak semestinya jenis Array, dan panjangnya tidak boleh dijamin Selepas menambah operasi bit, nilai yang tidak pasti boleh ditukar kepada Nombor.
Tukar sebarang nilai JS kepada nombor tanpa NaN
Semua nilai bukan angka ditukar kepada 0
Semua nombor yang lebih besar daripada atau sama dengan 0 mengambil bahagian integer