21. 類型轉(zhuǎn)換

2018-02-24 16:11 更新
  • 21.1?在語(yǔ)句開始時(shí)執(zhí)行類型轉(zhuǎn)換。
  • 21.2?字符串:

    //  => this.reviewScore = 9;
    
    // bad
    const totalScore = this.reviewScore + '';
    
    // good
    const totalScore = String(this.reviewScore);
  • 21.3?對(duì)數(shù)字使用?parseInt?轉(zhuǎn)換,并帶上類型轉(zhuǎn)換的基數(shù)。

    const inputValue = '4';
    
    // bad
    const val = new Number(inputValue);
    
    // bad
    const val = +inputValue;
    
    // bad
    const val = inputValue >> 0;
    
    // bad
    const val = parseInt(inputValue);
    
    // good
    const val = Number(inputValue);
    
    // good
    const val = parseInt(inputValue, 10);
  • 21.4?如果因?yàn)槟承┰?parseInt 成為你所做的事的瓶頸而需要使用位操作解決性能問(wèn)題時(shí),留個(gè)注釋說(shuō)清楚原因和你的目的。

    // good
    /**
     * 使用 parseInt 導(dǎo)致我的程序變慢,
     * 改成使用位操作轉(zhuǎn)換數(shù)字快多了。
     */
    const val = inputValue >> 0;
  • 21.5?注:?小心使用位操作運(yùn)算符。數(shù)字會(huì)被當(dāng)成?64 位值,但是位操作運(yùn)算符總是返回 32 位的整數(shù)(參考)。位操作處理大于 32 位的整數(shù)值時(shí)還會(huì)導(dǎo)致意料之外的行為。關(guān)于這個(gè)問(wèn)題的討論。最大的 32 位整數(shù)是 2,147,483,647:

    2147483647 >> 0 //=> 2147483647
    2147483648 >> 0 //=> -2147483648
    2147483649 >> 0 //=> -2147483647
  • 21.6?布爾:

    const age = 0;
    
    // bad
    const hasAge = new Boolean(age);
    
    // good
    const hasAge = Boolean(age);
    
    // good
    const hasAge = !!age;
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)