昨天一個(gè)技術(shù)群里有朋友貼出一個(gè)egret的api文檔的截圖启昧,提出有個(gè)地方看不懂炊汤,筆者后來(lái)回答了該問(wèn)題苗分,現(xiàn)在問(wèn)題復(fù)原厌蔽;話不多說(shuō)上代碼;
/**
* 返回位于指定索引處的子顯示對(duì)象實(shí)例摔癣。
* @param index 子對(duì)象的索引位置奴饮。
* @returns 位于指定索引位置處的子顯示對(duì)象。
* @see #getChildByName()
* @version Egret 2.4
* @platform Web,Native
* @language zh_CN
*/
DisplayObjectContainer.prototype.getChildAt = function (index) {
index = +index | 0;
if (index >= 0 && index < this.$children.length) {
return this.$children[index];
}
else {
true && egret.$error(1007);
return null;
}
};
這是egret.js 的一段代碼择浊,我們注意一下該方法的這句:
index = +index | 0;
當(dāng)時(shí)他提出看不懂就是這句拐云;下面我來(lái)解釋一下為什么這么寫和其中的兩個(gè)知識(shí)點(diǎn);
后半部分近她,拋開+ 號(hào)叉瘩,其實(shí)就是個(gè) 按位或 的操作,一個(gè)數(shù)按位或0 那么得到的還是他本身粘捎,這么寫是為了取整薇缅,例如:
console(1.999 | 0) // 返回值為 1
console(0.11 | 0) // 返回值為0
console(1 | 0) // 返回值為1
我們都知道危彩,兩個(gè)數(shù)的按位或,第一步需要把兩個(gè)數(shù)化為二進(jìn)制表示泳桦,然后按位或汤徽,但為什么會(huì)有返回這樣的值呢? 是因?yàn)樵谶M(jìn)行按位操作的時(shí)候灸撰,操作數(shù)會(huì)先轉(zhuǎn)化為2進(jìn)制的32bit谒府,然后通過(guò)無(wú)符號(hào)右移,取整浮毯,然后再進(jìn)行按位操作完疫。所以就會(huì)出現(xiàn)剛才的返回值結(jié)果;
位運(yùn)算的更多內(nèi)容可以看我的另一篇文檔:
位運(yùn)算的一點(diǎn)理解和運(yùn)用
好了债蓝,第一個(gè)部分解釋了壳鹤,接下來(lái)說(shuō)我們本期的主題:另一個(gè)知識(shí)點(diǎn) 加(+)號(hào)操作符:
+號(hào)是我們最熟悉的一個(gè)操作符了;日常有一下幾種用法饰迹;
1.加法運(yùn)算芳誓,例如:console.log(1+2); ==>3
2.字符串連接,例如:console.log(“a”+”b”);==>”ab”
稍微高級(jí)一點(diǎn)的還有 += 是同時(shí)做加法和賦值的啊鸭,比如:
a += 1; // a = a + 1;
除了這些作用外锹淌,神奇的javascript中的加 (+)操作符,還有非常神奇的作用
3赠制、轉(zhuǎn)換數(shù)據(jù)類型
上網(wǎng)友提供的例子:
// 16進(jìn)制轉(zhuǎn)換:
+”0xFF”; // -> 255
// 獲取當(dāng)前的時(shí)間戳,相當(dāng)于`new Date().getTime()`:
+new Date();
// 比 parseFloat()/parseInt()更加安全的解析字符串
parseInt(“1,000″); // -> 1, not 1000
+”1,000″; // -> NaN, much better for testing user input
parseInt(“010″); // -> 8, because of the octal literal prefix
+”010″; // -> 10, `Number()` doesn't parse octal literals
//一些簡(jiǎn)單的縮寫比如: if (someVar === null) {someVar = 0};
+null; // -> 0;
// 布爾型轉(zhuǎn)換為整型
+true; // -> 1;
+false; // -> 0;
//其他:
+”1e10″; // -> 10000000000
+”1e-4″; // -> 0.0001
+”-12″; // -> -12:
這么一看就全都明白了赂摆;轉(zhuǎn)化類型哪家強(qiáng),JS中找 + 操作符憎妙!:)
還有我們常用到的數(shù)字加空字符串的操作就可以將數(shù)字轉(zhuǎn)化為字符串:
let n:number = 5;
console.log(typeof(n + "")); // ==> string
當(dāng)然對(duì)于加操作符可能還有一些筆者沒(méi)有總結(jié)到的的使用特性库正,歡迎留言補(bǔ)充!
我是一個(gè)小學(xué)生:來(lái)自一個(gè)矯情的程序員