鴻蒙傳說(shuō)
2018-09-06 14:38:08
今天剛看到j(luò)s歸并排序排序有一段知道作用和Math.floor()一樣,~是取反的意思,兩次取反還是什么的,之前在jQuery源碼里面還見(jiàn)到類(lèi)似 + function(){}、?function(){}、!function(){}.這樣的目的是什么,讓源碼看起來(lái)更加簡(jiǎn)單,效率更高還是怎么?求教?。?!function merge(left, right) { var tmp = []; while (left.length && right.length) { if (left[0] < right[0])
tmp.push(left.shift()); else
tmp.push(right.shift());
} return tmp.concat(left, right);
}
function mergeSort(a) { if (a.length === 1)
return a; var mid = ~~(a.length / 2) //------------------->"~~"
, left = a.slice(0, mid)
, right = a.slice(mid); return merge(mergeSort(left), mergeSort(right));
}
1 回答

小怪獸愛(ài)吃肉
TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
~是js里的位操作運(yùn)算符,意思是按位取反。就是把操作數(shù)轉(zhuǎn)換成二進(jìn)制把每一位視作布爾值進(jìn)行取非(not)
操作
位運(yùn)算符在操作數(shù)是浮點(diǎn)數(shù)的情況下會(huì)向下去整,只保留整數(shù)部分。~~連用的話就是按位取反再取反,當(dāng)操作數(shù)是整數(shù)的情況是返回自己,是浮點(diǎn)的話就相當(dāng)于Math.floor
的效果。
至于+function(){}
和!function(){}
是因?yàn)閖s里function(){}
可以被解析為函數(shù)聲明和函數(shù)表達(dá)式,而且是會(huì)優(yōu)先解析為函數(shù)聲明。使用+
或!
是為了讓解釋器將function(){}
解析為函數(shù)表達(dá)式。
添加回答
舉報(bào)
0/150
提交
取消