显式强制类型转换
1. 日期顯式轉(zhuǎn)換為數(shù)字+new Date; //1478845373322 javascript有個(gè)奇特的語(yǔ)法,即構(gòu)造函數(shù)沒(méi)有參數(shù)時(shí)可以不用帶()。不過(guò)最好還是使用ES5中新加入的?靜態(tài)方法:Date.now()。2. ~運(yùn)算符按位運(yùn)算符只適用于32位整數(shù),運(yùn)算符會(huì)強(qiáng)制操作數(shù)使用32位格式。這是通過(guò)抽象操作ToInt32實(shí)現(xiàn)的。ToInt32 首先執(zhí)行ToNumber 強(qiáng)制類(lèi)型轉(zhuǎn)換,比如“123”會(huì)先轉(zhuǎn)換為123,然后再執(zhí)行ToInt32。
按位運(yùn)算符有6個(gè):?& 按位與?? ??| 按位或 ? ??^ 按位異或?? ??~ 取反?? ??>> 右移?? ??<< 左移
但這嚴(yán)格來(lái)說(shuō)并不是強(qiáng)制類(lèi)型轉(zhuǎn)換(因?yàn)榉祷刂殿?lèi)型并沒(méi)有發(fā)生變化),但按位運(yùn)算符(例如 | 或~)和某些數(shù)字一起使用時(shí)會(huì)產(chǎn)生類(lèi)似強(qiáng)制類(lèi)型轉(zhuǎn)換的效果,返回另外的數(shù)字。例如 | 運(yùn)算符 0|x僅執(zhí)行ToInt32轉(zhuǎn)換。但以下特殊字符無(wú)法以32格式呈現(xiàn),因此ToInt32返回0。0|-0;//0 0|NaN;//0 0|Infinity;//0 0|-Infinity;//0 ~ 首先將值強(qiáng)制類(lèi)型轉(zhuǎn)換為32位數(shù)字,然后執(zhí)行按位運(yùn)算符操作“非”(對(duì)每個(gè)字符進(jìn)行反轉(zhuǎn))。另外一種說(shuō)法,源自早期的計(jì)算機(jī)科學(xué)和離散數(shù)學(xué):~返回2的補(bǔ)碼。~x等同于 -(x+1);~5; //-6 3. 字位截除 ~~~~中第一個(gè) ~ 執(zhí)行ToInt32并反轉(zhuǎn)字位,然后第二個(gè) ~ 再進(jìn)行一次字位反轉(zhuǎn),將所有的字位反轉(zhuǎn)為原值,最后得到的仍是ToInt32的結(jié)果。~~只適用于32位數(shù)字,且它對(duì)負(fù)數(shù)的處理與Math.floor(...)不同。Math.floor(-88.9); //-89 ~~-88.9; //-88 ~~可以將值截除為一個(gè)32位整數(shù),x|0也可以。但最好是使用~~,出于運(yùn)算符優(yōu)先級(jí)的考慮。4. 顯式解析數(shù)字字符串解析允許字符串中含有非數(shù)字字符串,從左到右解析,遇到非數(shù)字字符則停止,而轉(zhuǎn)換不允許出現(xiàn)非數(shù)字字符,否則會(huì)失敗并返回NaN。var a="56"; var b="56px"; Number(a); //56 parseInt(a); //56 Number(b); //NaN parseInt(b); //56 ES5之前的parseInt32(...) 有一個(gè)坑,如果沒(méi)有第二個(gè)參數(shù)來(lái)指定轉(zhuǎn)換的基數(shù),它會(huì)根據(jù)字符串的第一個(gè)字符來(lái)自行決定基數(shù)。如果第一個(gè)字符是x或者X,則轉(zhuǎn)換為十六進(jìn)制數(shù)字。如果是0,則轉(zhuǎn)換為八進(jìn)制數(shù)字。ES5開(kāi)始,parseInt32(...) 默認(rèn)轉(zhuǎn)換為十進(jìn)制。5. 顯式轉(zhuǎn)換為布爾值 ?Boolean(...)一元運(yùn)算符!顯式的將值類(lèi)型轉(zhuǎn)換為布爾值,但同時(shí)會(huì)將真值轉(zhuǎn)換為假值,假值轉(zhuǎn)換為真值。所以顯式強(qiáng)制類(lèi)型轉(zhuǎn)換為布爾值常用的做法是!!,第二個(gè)!會(huì)將結(jié)果反轉(zhuǎn)為原值。var a="0"; var b=[]; var c={}; !!a; //true !!b; //true !!c; //true 下面這段代碼:var a=56; var b=a?true:false; a 首先被強(qiáng)制轉(zhuǎn)換為布爾值才能進(jìn)行條件判斷,成為“顯式的隱式”。建議使用Boolean(a)和!!a來(lái)進(jìn)行顯式的強(qiáng)制類(lèi)型轉(zhuǎn)換。
來(lái)自為知筆記(Wiz)
按位運(yùn)算符有6個(gè):?& 按位與?? ??| 按位或 ? ??^ 按位異或?? ??~ 取反?? ??>> 右移?? ??<< 左移
但這嚴(yán)格來(lái)說(shuō)并不是強(qiáng)制類(lèi)型轉(zhuǎn)換(因?yàn)榉祷刂殿?lèi)型并沒(méi)有發(fā)生變化),但按位運(yùn)算符(例如 | 或~)和某些數(shù)字一起使用時(shí)會(huì)產(chǎn)生類(lèi)似強(qiáng)制類(lèi)型轉(zhuǎn)換的效果,返回另外的數(shù)字。例如 | 運(yùn)算符 0|x僅執(zhí)行ToInt32轉(zhuǎn)換。但以下特殊字符無(wú)法以32格式呈現(xiàn),因此ToInt32返回0。
來(lái)自為知筆記(Wiz)
轉(zhuǎn)載于:https://www.cnblogs.com/cheemon/p/6054550.html
總結(jié)
- 上一篇: code vs1517 求一次函数解析式
- 下一篇: 使用air进行移动app开发常见功能和问