成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

重學JS: 隱式強制類型轉(zhuǎn)換

Fourierr / 3602人閱讀

摘要:隱式強制類型轉(zhuǎn)換指的是那些隱藏的強制類型轉(zhuǎn)換,副作用也不是很明顯,事實上,只要自己覺得不夠明顯的強制類型轉(zhuǎn)換都可以算作隱式強制類型轉(zhuǎn)換,接下來,此文將會介紹幾種常見的隱式類型轉(zhuǎn)換。

隱式強制類型轉(zhuǎn)換指的是那些隱藏的強制類型轉(zhuǎn)換,副作用也不是很明顯,事實上,只要自己覺得不夠明顯的強制類型轉(zhuǎn)換都可以算作隱式強制類型轉(zhuǎn)換,接下來,此文將會介紹幾種常見的隱式類型轉(zhuǎn)換。

加法操作符

轉(zhuǎn)換規(guī)則:

如果兩個操作數(shù),一個操作數(shù)是數(shù)字,另一個數(shù)是布爾值,那么則將布爾值轉(zhuǎn)換為數(shù)字,然后進行加法操作

如果兩個操作都是字符串,則將第二個操作數(shù)與第一個操作數(shù)拼接起來

如果只有一個操作數(shù)是字符串,則將另一個操作數(shù)轉(zhuǎn)換為字符串,然后再將兩個字符串拼接起來

如果另一個操作數(shù)是數(shù)字、或布爾值,則調(diào)用它們的toString()方法取得對應的字符串值

如果另一個操作數(shù)對象,對象valueOf()方法返回基本值,則調(diào)用valueOf()方法取得返回值,然后再做字符串拼接,否則直接調(diào)用toString()方法取得對應的字符串值

舉例:

console.log(1 + true) // 2
console.log("1" + "1") // "11"
console.log(1 + "1") // "11"
console.log("1" + "true") // "1true"
var a = {
  valueOf: function() {
    return 2
  },
  toString: function() {
    return 1
  }
}
var b = {b: 1}
console.log(a + "1") // "21"
console.log(b + "1") // "[object Object]1"
減法操作符

轉(zhuǎn)換規(guī)則:

如果有一個操作數(shù)字符串、布爾值、null或者undefined,則先在后臺調(diào)用Number()函數(shù)將其轉(zhuǎn)換為數(shù)值,如果轉(zhuǎn)換的結(jié)果是NaN,則減法的結(jié)果就是NaN

如果有一個操作數(shù)是對象,則調(diào)用的valueOf()方法取得表示該對象的數(shù)值,如果得到的結(jié)果是NaN,則減法的結(jié)果就是NaN。如果對象valueOf()方法返回不是基本值,則調(diào)用toString()方法并將得到的字符串轉(zhuǎn)為數(shù)字

舉例:

console.log(5 - "1") // 4
console.log(5 - true) // 4
console.log(5 - null) // 5
console.log(5- undefined) // NaN
const c = {
  valueOf: function() {
    return "1"
  }
}
console.log(5 - c) // 4
隱式強制類型轉(zhuǎn)為布爾值

場景:

if()語句中的條件判斷表達式

for()語句中的條件判斷表達式

while()和do..while()循環(huán)條件中的判斷表達式

?:三元運算中的判斷表達式

邏輯元算符||和&&左邊的操作數(shù)

以上的場景中非布爾值會被隱式的強制轉(zhuǎn)為布爾值,轉(zhuǎn)換規(guī)則遵循上篇文章的ToBoolean轉(zhuǎn)換規(guī)則

舉例:

const d = 11
const e = null
let f
const g = f ? d : e
console.log(g) // null
console.log(d && e) // null
console.log(d || e) // 11
相等

相等操作符分為寬松相等==和嚴格相等===,這兩個都用來判斷值是否相等,區(qū)別在于在判斷兩邊操作數(shù)是否相等時,寬松相等允許進行強制類型轉(zhuǎn)換,而嚴格相等不允許進行強制類型轉(zhuǎn)換,因此下面只會介紹寬松相等在比較時的強制類型轉(zhuǎn)換

轉(zhuǎn)換規(guī)則:

如果有一個操作數(shù)是布爾值,則在比較相等性之前先將其轉(zhuǎn)換為數(shù)值,false轉(zhuǎn)為0true轉(zhuǎn)為1

如果一個操作數(shù)是字符串,另一個操作數(shù)是數(shù)字,在比較之前先將字符串轉(zhuǎn)換為數(shù)字

如果一個操作數(shù)是對象,另一個操作數(shù)不是,則調(diào)用對象的valueOf()方法,若不是基本類型值,則調(diào)用toString()方法,用得到的基本類型值按照前面的規(guī)則進行比較

null和undefined是相等的

要比較相等性之前,不能將null和undefined轉(zhuǎn)換成其他任何值

如果有一個操作數(shù)是NaN,則相等操作符返回false,而不相等返回true。即使兩個操作數(shù)都是NaN,相等操作符也返回false

如果兩個操作數(shù)都是對象,則比較它們是不是同一個對象。如果兩個操作數(shù)都指向同一個對象,則相等操作符返回true,否則,返回false

舉例:

console.log(null == undefined) // true
console.log("NaN" == NaN) // false
console.log(5 == NaN) // false
console.log(NaN == NaN) // false
console.log(NaN != NaN) // true
console.log(false == 0) // true
console.log(true == 1) // true
console.log(true == 2) // false
console.log(undefined == 0) // false
console.log(null == 0) // false
console.log("5" == 5) // true
比較操作符

比較操作符包括小于(<)、大于(>)、小于等于(<=)、和大于等于(>=)
轉(zhuǎn)換規(guī)則:

如果兩個操作數(shù)都是字符串,則比較兩個字符串的字符編碼值

如果一個操作數(shù)是數(shù)值,則將另一個操作數(shù)轉(zhuǎn)換為數(shù)值,然后進行數(shù)值比較

如果一個操作數(shù)是對象,則調(diào)用這個對象的valueOf()方法,若返回值是基本類型,則用得到的結(jié)果進行比較,否則調(diào)用toString()方法,用得到的值進行比較

如果一個操作數(shù)是布爾值,則先將其轉(zhuǎn)換為數(shù)字,然后進行比較

舉例:

console.log("11" < 3) // false
console.log(true < 2) // true
const h = {
  valueOf: function () {
    return "22"
  }
}
console.log(h > 1) // true
總結(jié)

這篇文章對JS中的常見隱式強制類型轉(zhuǎn)換做了一個小結(jié),希望能對大家理解有所幫助。如果有錯誤或不嚴謹?shù)牡胤?,歡迎批評指正,如果喜歡,歡迎點贊

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105375.html

相關(guān)文章

  • 重學JS:顯式強制類型轉(zhuǎn)換

    ToString ToString負責處理非字符串到字符串的強制類型轉(zhuǎn)換,常用的字符串化方法String()、toString()。基本類型值的字符串化規(guī)則: null轉(zhuǎn)換為null undefined轉(zhuǎn)換為undefined true轉(zhuǎn)化為true 數(shù)字的字符串化遵循通用規(guī)則,極大值或者極小值采用科學計數(shù)法表示 普通對象在字符串化時,實際執(zhí)行Object.prototype.toString...

    xiangchaobin 評論0 收藏0
  • JavaScript數(shù)據(jù)類型及(隱式)類型轉(zhuǎn)換詳解

    摘要:顯示的調(diào)用轉(zhuǎn)換過程稱為顯式強制類型轉(zhuǎn)換,隱式的情況稱為隱式強制類型轉(zhuǎn)換。隱式強制類型轉(zhuǎn)換讓代碼變得晦澀難懂而又便捷而奇妙。事實上,允許在比較中進行強制類型轉(zhuǎn)換,而不允許。如果有并且返回基本類型值,就使用該值進行強制類型轉(zhuǎn)換。 JavaScript是一種非常靈活的現(xiàn)代編程語言,靈活到使用者極其容易被忽視的它那廣闊的世界以及它帶給我們的無限遐想空間。本文將對JavaScript最最基礎(chǔ)也最...

    hiyayiji 評論0 收藏0
  • JavaScript 需要檢查變量類型

    摘要:一返回值調(diào)用外部方法獲取的值需要對類型做判斷,因為我們對方法返回的值是有期望值類型,但是卻不能保證這個接口返回的值一直是同一個類型。 19年目標:消滅英語!我新開了一個公眾號記錄一個程序員學英語的歷程 有提升英語訴求的小伙伴可以關(guān)注公眾號:csenglish 程序員學英語,每天花10分鐘交作業(yè),跟我一起學英語吧 javascript作為一門動態(tài)類型語言,具有很高的動態(tài)靈活性,當定義函數(shù)...

    Songlcy 評論0 收藏0
  • 深入理解JavaScript的類型轉(zhuǎn)換

    摘要:等同于等同于其他類型和布爾類型之間的比較如果是布爾類型,則返回的結(jié)果。 showImg(https://segmentfault.com/img/bVburFq?w=796&h=398); 前言 JavaScript作為一門弱類型語言,我們在每天的編寫代碼過程中,無時無刻不在應用著值類型轉(zhuǎn)換,但是很多時候我們只是在單純的寫,并不曾停下腳步去探尋過值類型轉(zhuǎn)換的內(nèi)部轉(zhuǎn)換規(guī)則,最近通過閱讀你...

    W4n9Hu1 評論0 收藏0
  • 深入理解JavaScript的類型轉(zhuǎn)換

    摘要:等同于等同于其他類型和布爾類型之間的比較如果是布爾類型,則返回的結(jié)果。 showImg(https://segmentfault.com/img/bVburFq?w=796&h=398); 前言 JavaScript作為一門弱類型語言,我們在每天的編寫代碼過程中,無時無刻不在應用著值類型轉(zhuǎn)換,但是很多時候我們只是在單純的寫,并不曾停下腳步去探尋過值類型轉(zhuǎn)換的內(nèi)部轉(zhuǎn)換規(guī)則,最近通過閱讀你...

    niuxiaowei111 評論0 收藏0

發(fā)表評論

0條評論

Fourierr

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<