21. 類型轉(zhuǎn)換

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

    //  => this.reviewScore = 9;
    
    // bad
    const totalScore = this.reviewScore + '';
    
    // good
    const totalScore = String(this.reviewScore);
  • 21.3?對數(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?如果因為某些原因 parseInt 成為你所做的事的瓶頸而需要使用位操作解決性能問題時,留個注釋說清楚原因和你的目的。

    // good
    /**
     * 使用 parseInt 導(dǎo)致我的程序變慢,
     * 改成使用位操作轉(zhuǎn)換數(shù)字快多了。
     */
    const val = inputValue >> 0;
  • 21.5?注:?小心使用位操作運算符。數(shù)字會被當(dāng)成?64 位值,但是位操作運算符總是返回 32 位的整數(shù)(參考)。位操作處理大于 32 位的整數(shù)值時還會導(dǎo)致意料之外的行為。關(guā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)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號