日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转换string_类型转换详解

發布時間:2025/1/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转换string_类型转换详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

類型轉換分類

  • 顯示類型轉換
  • Number( )
  • String( )
  • Boolean( )
  • 隱式類型轉換
  • 運算
  • 判斷語句
  • native調用
  • ..............

轉換為字符串

1、轉換為字符串場景

  • 能使用的辦法
  • toString()
  • String()
  • 隱式轉換(一般都是調用其toString)
  • 加號運算的時候,如果某一邊出現字符串,則是字符串拼接
  • 把對象轉換為數字,需要先toString()轉換為字符串,再去轉換為數字
  • 基于alert/confirm/prompt/document.write...這些方式輸出內容,都是把內容先轉換為字符串,然后再輸出的
  • 2、轉換字符串規則

    把其他類型轉換為字符串,一般都是直接""包起來,只有下面幾種情況比較特殊

    • {}: 只有{}普通對象調取toString是調用的Object.prototype.toString,不是轉換為字符串,而是檢測數據類型,返回結果是“[object object]”,更準確的理解應該是如下

    ``` 1. 如果對象具有toString()方法,則調用這個方法。如果它返回一個原始值,JavaScript將這個值轉換為字符串(如果本身不是字符串的話),并返回這個字符串結果。需要注意的是,原始值到字符串的轉換在表3-2中已經有了詳盡的說明。

  • 如果對象沒有toString()方法,或者這個方法并不返回一個原始值,那么JavaScript會調用valueOf()方法。如果存在這個方法,則JavaScript調用它。如果返回值是原始值,JavaScript將這個值轉換為字符串(如果本身不是字符串的話),并返回這個字符串結果。
  • 否則,JavaScript無法從toString()或valueOf()獲得一個原始值,因此這時它將拋出一個類型錯誤異常 ```
  • []: 使用join()方法進行鏈接
  • String(null) // 'null' String(undefined) // 'undefined' String(true) // 'true' String(1) // '1' String(-1) // '-1' String(0) // '0' String(-0) // '0' String(Math.pow(1000,10)) // '1e+30' String(Infinity) // 'Infinity' String(-Infinity) // '-Infinity' String(function(){}) // "function(){}"// 數組轉換為字符串 String([]) // "" String(['a']) // "a" String([1,2]) // "1,2" String(['a', 1]) // 'a, 1' String([1,[2,3]]) // '1,2,3'// 對象轉換為字符串 String({}) // '[object Object]' String({name: 12}) // "[object Object]"

    轉換為數字

    1、轉換為數字場景

  • 特定需要轉換為Number的 方法
  • Number([val])
  • parseInt/parseFloat([val])
  • 隱式轉換(瀏覽器內部默認要先轉換為Number在進行計算的)
  • isNaN([val])
  • 數學運算(特殊情況:+在出現字符串的情況下不是數學運算,是字符串拼接)
  • 在==比較的時候,有些值需要轉換為數字再進行比較
  • 2、轉換數字規則

    一般隱式轉換都是自動調用的Number

    string -> number:

    • 如果是純數字的字符串,則直接將其轉換為數字
    • 如果字符串中有非數字的內容,則轉換為NaN
    • 如果字符串是一個空串或者是一個全是空格的字符串,則轉換為0
    • 如果字符串中包含有效的十六進制格式,例如"0xf",則將其他轉換為相同大小的十進制整數值;

    Object -> number:

    • ``` // 先轉換為字符串,在轉換為數字
    • 如果對象具有valueOf()方法,后者返回一個原始值,則JavaScript將這個原始值轉換為數字(如果需要的話)并返回這個數字。
    • 否則,如果對象具有toString()方法,后者返回一個原始值,則JavaScript將其轉換并返回 [10] 。
    • 否則,JavaScript拋出一個類型錯誤異常。 ```
    Number('') // 0 Number(' ') // 0 Number('123') // 123 Number('12.3') // 12.3 Number('12abc') //NaN Number('0xf') // 15 Number(undefined) //NaN Number(null) // 0 Number(true) // 1 Number(false) // 0Number({}) // NaN Number([]) // 0 Number([1]) // 1 Number([1, 2]) // NaNparseInt('12ab3') // 12 parseInt('ab124') //NaN parseInt(12.3) // 12parseFloat('12ab3') // 12 parseFloat('ab124') //NaN parseFloat(12.3) // 12.31+undfined // NaN 1 + null // 1

    轉換為布爾

  • 基于以下方式可以把其它數據類型轉換為布爾
  • ! 轉換為布爾值后取反
  • !! 轉換為布爾類型
  • Boolean([val])
  • 隱式轉換
  • 在循環或者條件判斷中,條件處理的結果就是布爾類型值
  • 規則:只有 ‘0、NaN、null、undefined、空字符串’ 五個值會變為布爾的FALSE,其余都是TRUE

    https://blog.csdn.net/itcast_cn/article/details/82887895?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

    ==比較規則

  • null==undefined:true,但是換成===結果是false(因為類型不一致),剩下null/undefined和其它任何數據類型值都不相等
  • 字符串==對象 要把對象轉換為字符串
  • 剩下如果==兩邊數據類型不一致,都是需要轉換為數字再進行比較
  • {}=={} // false []==[] // false NaN==NaN // false//ull==undefined:true,剩下null/undefined和其它任何數據類型值都不相等 undefined == null // true undefined == '' // false null == '' // false'1' == new String(1) // true

    題目推薦

    {}+[] // 0 ({}+[]) // "[object Object]" []+{} // "[object Object]"{a:0}+1 // 1

    {}+[] = 0這個怎么理解呢?

    現在在寫代碼過程中,每個項目組的規范會有所不同,有些項目組結尾加分號,有些則不加,當不加分號的時候,下面代碼也不會在代碼中報錯,

    function getName(){} +[]// 壓縮后 function getName(){}+[] 所以最后 就計算 +[] // 0
    ![] // false ->!(Boolean([])) +[] // 0+![] // 0 []+[] // "" {}+{}//"[object Object][object Object]" []+![] // false => 先計算![],再把[]轉換為String([]) ''+{} //"[object Object]" {}+'' //0// 數組訪問map屬性 []["map"] // ? map() { [native code] } []['map']+[] // "function map() { [native code] }"[]==![] // true 都轉換為數字都是0 let result = 10+false+undefined+[]+'Tencent'+null+true+{}; // "NaNTencentnulltrue[object Object]"

    解析過程

    》 10 + false // 10,10 + Number(false) = 10 ,10 + 0 = 10 》 10 + undefined // 10 + Number(undefined) = 10 + NaN = NaN 》 NaN + [] = NaN + String([]) = NaN + '' = 'NaN'; 》 'NaN' + 'Tencent' = 'NaNTencent' 》 'NaNTencent' + null = 'NaNTencent' + String(null) = 'NaNTencent' + 'null' = 'NaNTencentnull' 》 'NaNTencentnull' + true = 'NaNTencentnull' + String(true) = 'NaNTencentnull' + 'true' ='NaNTencentnulltrue' 》 'NaNTencentnulltrue' + String({})= 'NaNTencentnulltrue'+'[object Object]' = 'NaNTencentnulltrue[object Object]'

    參考鏈接

    https://wangdoc.com/javascript/features/conversion.html

    js類型轉換的各種玩法

    總結

    以上是生活随笔為你收集整理的转换string_类型转换详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。