国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

重學JS: 隱式強制類型轉換

Fourierr / 3590人閱讀

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

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

加法操作符

轉換規則:

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

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

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

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

如果另一個操作數對象,對象valueOf()方法返回基本值,則調用valueOf()方法取得返回值,然后再做字符串拼接,否則直接調用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"
減法操作符

轉換規則:

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

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

舉例:

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
隱式強制類型轉為布爾值

場景:

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

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

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

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

邏輯元算符||和&&左邊的操作數

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

舉例:

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
相等

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

轉換規則:

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

如果一個操作數是字符串,另一個操作數是數字,在比較之前先將字符串轉換為數字

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

null和undefined是相等的

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

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

如果兩個操作數都是對象,則比較它們是不是同一個對象。如果兩個操作數都指向同一個對象,則相等操作符返回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
比較操作符

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

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

如果一個操作數是數值,則將另一個操作數轉換為數值,然后進行數值比較

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

如果一個操作數是布爾值,則先將其轉換為數字,然后進行比較

舉例:

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

這篇文章對JS中的常見隱式強制類型轉換做了一個小結,希望能對大家理解有所幫助。如果有錯誤或不嚴謹的地方,歡迎批評指正,如果喜歡,歡迎點贊

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105375.html

相關文章

  • 重學JS:顯式強制類型轉換

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

    xiangchaobin 評論0 收藏0
  • JavaScript數據類型及(隱式)類型轉換詳解

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

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

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

    Songlcy 評論0 收藏0
  • 深入理解JavaScript的類型轉換

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

    W4n9Hu1 評論0 收藏0
  • 深入理解JavaScript的類型轉換

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

    niuxiaowei111 評論0 收藏0

發表評論

0條評論

Fourierr

|高級講師

TA的文章

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