javascript
《JS权威指南学习总结--3.8类型转换》
JS數據類型轉換方法主要有三種:
? ? ? ? ?轉換函數、強制類型轉換、利用js變量弱類型轉換。
一.轉換函數
? ? ? ? ?parseInt()和parseFloat()兩個轉換函數。
? ? ? ? ?前者把值轉換成整數,后者把值轉換成浮點數。
? ? ? ? ?只有對String類型調用這些方法,這兩個函數才能正確運行;對其他類型返回的都是NaN(Not a Number)。
? ? ? ? ?parseInt()判斷:在判斷字符串是否是數字值前,parseInt()和parseFloat()都會仔細分析該字符串。
? ? ? ? ?parseInt()方法首先查看位置0處的 字符,判斷它是否是個有效數字;
? ? ? ? ?如果不是,該方法將返回NaN,不再繼續執行其他操作。
? ? ? ? ?但如果該字符是有效數字,該方法將查看位置1處的字符,進行同樣的 測試。
? ? ? ? ?這一過程將持續到發現非有效數字的字符為止,此時parseInt()將把該字符之前的字符串轉換成數字。
? ? ? ? 例:
? ? ? ? ?parseInt("1234blue");?? // ? 1234?
? ? ? ? ?parseInt("0xA");?? // ? 10?
? ? ? ? ?parseInt("22.5");?? // ? 22?
? ? ? ? ?parseInt("blue");?? // ? NaN
? ? ? ? 擴展:
? ? ? ??parseInt()方法還有基模式,可以把二進制、八進制、十六進制或其他任何進制的字符串轉換成整數。
? ? ? ??可以這樣調用parseInt()方法:?
? ? ? ? ? parseInt("10",?? 2);?? // ? 2?
? ? ? ? ? parseInt("10",?? 8);?? // ? 8?
? ? ? ? ? parseInt("10",?? 10);?? // 10?
? ? ? ?parseFloat()判斷:
? ? ? ? ?從位置0開始查看每個字符,直到找到第一個非有效的字符為止,然后把該字 符之前的字符串轉換成數字。
? ? ? ? ?不過,對于這個方法來說,第一個出現的小數點是有效字符。如果有兩個小數點,第二個小數點將被看作無效的, parseFloat()方法會把這個小數點之前的字符串轉換成數字。?這意味著字符串 "22.34.5 "將被解析成22.34。?
? ? ? ? ?使用parseFloat()方法的另一不同之處在于,字符串必須以十進制形式表示浮點數,而不能用八進制形式或十六進制形式。
? ? ? ? 該方法會忽略前導0,所以八進制數0908將被解析為908。對于十六進制數0xA,該方法將返回NaN,因為在浮點數中,x不是有效字符。此外,parseFloat()也沒有基模式。
? ? ? ? ?parseFloat()例子:??
? ? ? ? ?parseFloat("1234blue");?? //1234.0?
? ? ? ? ?parseFloat("0xA");?? //NaN?
? ? ? ? ?parseFloat("22.5");?? //22.5?
? ? ? ? ?parseFloat("22.34.5");?? //22.34?
? ? ? ? ?parseFloat("0908");?? //908?
? ? ? ? ?parseFloat("blue");?? //NaN
?二.強制類型轉換
? ? ? ?Boolean(value)——把給定的值轉換成Boolean型;?
? ? ? ?Number(value)——把給定的值轉換成數字(可以是整數或浮點數);?
? ? ? ?String(value)——把給定的值轉換成字符串。?
? ? ? ?用這三個函數之一轉換值,將創建一個新值,存放由原始值直接轉換成的值。這會造成意想不到的后果。?
? ? ? ?當要轉換的值是至少有一個字符的字符串、非0數字或對象時,Boolean()函數將返回true。如果該值是空字符串、數字0、undefined或null,它將返回false。
? ? ? ?Boolean型的強制類型轉換:
? ? ? ??Boolean("");?? //false?? –?? empty?? string?
? ? ? ? Boolean("hi");?? //true?? –?? non-empty?? string?
? ? ? ? Boolean(100);?? //true?? –?? non-zero?? number?
? ? ? ? Boolean(null);?? //false?? -?? null?
? ? ? ? Boolean(0);?? //false?? -?? zero?
? ? ? ? Boolean(new?? Object());?? //true?? –?? object
? ? ? ? Number()的強制類型轉換
? ? ? ??Number(false)?? 0?
? ? ? ? Number(true)?? 1?
? ? ? ? Number(undefined)?? NaN?
? ? ? ? Number(null)?? 0?
? ? ? ? Number( "5.5 ")?? 5.5?
? ? ? ? Number( "56 ")?? 56?
? ? ? ? Number( "5.6.7 ")?? NaN?
? ? ? ? Number(new?? Object())?? NaN?
? ? ? ? Number(100)?? 100 ?
? ? ? ?String()的強制類型轉換
? ? ? ? 它可把任何值轉換成字符串。要執行這種強制類型轉換,只需要調用作為參數傳遞進來的值的 toString()方法,即把1轉換成?? "1 ",把true轉換成 "true ",把false轉換成 "false ",依此類推。
? ? ? ? 強制轉換成字符串和調用toString()方法的唯一不同之處在于,對null或undefined值強制類型轉換可以生成字符串而不引發錯誤:
? ? ? ??var?? s1?? =?? String(null);?? //"null"?
? ? ? ? var?? oNull?? =?? null;?
? ? ? ? var?? s2?? =?? oNull.toString();?? //won’t?? work,?? causes?? an?? error
三.利用JS弱類型轉換
? ? ? ?<script>?
? ? ? ? ?var?? str= '012.345 ';?
? ? ? ? ?var?? x?? =?? str-0;?
? ? ? ? ?x?? =?? x*1;
? ? ? ? ?alert(x); //12.345
? ? ? ? </script>
?
轉載于:https://www.cnblogs.com/hanxuming/p/5762967.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的《JS权威指南学习总结--3.8类型转换》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 剑指Offer_17_树的子结构
- 下一篇: 前端开发代码架构相关想法