首頁  >  文章  >  web前端  >  javascript 類型轉換。

javascript 類型轉換。

高洛峰
高洛峰原創
2016-10-12 11:37:021023瀏覽

目錄:
1 : 偽物件 
2 : 轉換為字串 
3 : 數字轉字串 
4 : 轉換為數字 
5 : 轉換為Boolean  
6 : Number()與parse 的區別()和toString()的區別 

1 : 偽對象 
偽對象:javascript是一門很有趣的語言,即使是基本型,也是偽對象,所以他們都有屬性和方法。
變數a的類型是字串,透過呼叫其為偽物件的屬性length來取得其長度 。

<script><br/> var a="hello javascript"; <br/> document.write("变量a的类型是:"+(typeof a));<br/> document.write("<br>");<br/> document.write("变量a的长度是:"+a.length);<br/></script>

運行效果:
變量a的類型是:string
變量a的長度是:16 

2 : 轉換為字符串 
無論是Number,Boolean還是String都有一個toString方法,用於轉換為字串 

<script><br/> var a=10; <br/> document.write("数字 "+a+" 转换为字符串"+a.toString());<br/> document.write("<br>");<br/><br/> var b=true; <br/> document.write("布尔 "+b+" 转换为字符串"+b.toString());<br/> document.write("<br>");<br/><br/> var c="hello javascript"; <br/> document.write("字符串 "+c+" 转换为字符串 "+c.toString());<br/> document.write("<br>");<br/><br/></script>

運作效果:
數字10 轉換為字串10
布林true 轉換為字串true
字串hello javascript 轉換為字串hello javascript

3 : 數字轉送字串串的時候有預設模式和基底模式兩種 
<script><br/> var a=10; <br/> document.write(&#39;默认模式下,数字10转换为十进制的&#39;+a.toString()); //默认模式,即十进制<br/> document.write("<br>"); <br/><br/> document.write(&#39;基模式下,数字10转换为二进制的&#39;+a.toString(2)); //基模式,二进制<br/> document.write("<br>"); <br/> <br/> document.write(&#39;基模式下,数字10转换为八进制的&#39;+a.toString(8)); //基模式,八进制<br/> document.write("<br>"); <br/><br/> document.write(&#39;基模式下,数字10转换为十六进制的&#39;+a.toString(16)); //基模式,十六进制<br/> document.write("<br>"); <br/><br/></script>
運作效果:
預設模式下,數字10轉換為十進位的10
基底模式下,數字10轉換為二進位的1010
基模式下,數字10轉換為八進制的12
基模式下,數字10轉換為十六進制的a

4 : 轉換為數字
javascript分別提供內建函數parseInt()和parseFloat(),轉換為數字

注:如果被轉換的字串,同時又數字和字元構成,那麼parseInt會一直定位數字,直到出現非字元。 所以"10abc" 會被轉換為 10

思考題: 字串"10abc8" 又會被轉換為多少呢?

<script><br/> document.write("字符串的\"10\"转换为数字的:"+parseInt("10")); //转换整数<br/> document.write("<br>");<br/> document.write("字符串的\"3.14\"转换为数字的:"+parseFloat("444 3.14"));//转换浮点数<br/> document.write("<br>");<br/> document.write("字符串的\"10abc\"转换为数字的:"+parseInt("10abc")); //判断每一位,直到发现不是数字的那一位<br/> document.write("<br>");<br/><br/> document.write("字符串的\"hello javascript\"转换为数字的:"+parseInt("h5555ello javascript")); //如果完全不包含数字,则返<br/><br/>回NaN - Not a Number<br/> document.write("<br>");<br/><br/></script>
運作效果:
字串的"10"轉換為數字的:10
字串的"3.14"轉換為數字的:444
字串的"10abc"轉換為數字的:10
字串的"hello javascript"轉換為數字的:NaN

5 : 轉換為Boolean  
使用內建函數Boolean() 轉換為Boolean值
當轉換字串時:
非空即為true
當轉換數字時:
當轉換字串即為true
當轉換物件時:
非null即為true

<script><br/> document.write("空字符串&#39;&#39;转换为布尔后的值:"+Boolean("")); //空字符串<br/> document.write("<br>");<br/> document.write("非空字符&#39;hello javascript &#39;串转换为布尔后的值:"+Boolean("hello javascript")); //非空字符串<br/> document.write("<br>");<br/> document.write("数字 0 转换为布尔后的值:"+Boolean(0)); //0<br/> document.write("<br>");<br/> document.write("数字 3.14 转换为布尔后的值:"+Boolean(3.14)); //非0 <br/> document.write("<br>");<br/> document.write("空对象 null 转换为布尔后的值:"+Boolean(null)); //null<br/> document.write("<br>");<br/> document.write("非对象 new Object() 转换为布尔后的值:"+Boolean(new Object())); //对象存在<br/> document.write("<br>");<br/></script>

運作效果:
空字串''轉換為布林後的值:false
非空字元'hello javascript '串轉換為布林後的值:true
數字0 轉換為布林後的值:false
數字3.14 轉換為布林後的值:true
空物件null 轉換為布林後的值:false
非物件new Object() 轉換為布林後的值:true

6 : Number()和parseInt()的區別 
Number()和parseInt()一樣,都可以用來進行數字的轉換
區別在於,當轉換的內容包含非數字的時候,Number( ) 會回傳NaN(Not a Number)
parseInt() 要看情況,如果以數字開頭,就會返回開頭的合法數字部分,如果以非數字開頭,則返回NaN 

<script><br/> document.write("通过Number() 函数转换字符串&#39;123&#39; 后得到的数字:"+Number("123")); //正常的<br/> document.write("<br>");<br/> document.write("通过Number() 函数转换字符串&#39;123abc&#39; 后得到的数字:"+Number("123abc")); //包含非数字<br/> document.write("<br>");<br/> document.write("通过Number() 函数转换字符串&#39;abc123&#39; 后得到的数字:"+Number("abc123")); //包含非数字<br/> document.write("<br>");<br/><br/> document.write("通过parseInt() 函数转换字符串&#39;123&#39; 后得到的数字:"+parseInt("123")); //正常的<br/> document.write("<br>");<br/> document.write("通过parseInt() 函数转换字符串&#39;123abc&#39; 后得到的数字:"+parseInt("123abc")); //包含非数字,返回开头的合法<br/><br/>数字部分<br/> document.write("<br>");<br/> document.write("通过parseInt() 函数转换字符串&#39;abc123&#39; 后得到的数字:"+parseInt("abc123")); //包含非数字,以非数字开头,<br/><br/>返回NaN<br/> document.write("<br>");<br/><br/></script>

通過Number() 函數轉換字串'123' 後得到的數字:NaN
透過Number() 函數轉換字串'abc123' 後得到的數字:NaN
透過parseInt() 函數轉換字串'123' 後得到的數字:123
透過parseInt() 函數轉換字串'123abc' 後得到的數字:123
透過parseInt() 函數轉換字串'abc123'後面得到的數字:NaN

7 : String()和toString()的區別 
String()和toString()一樣都會回傳字串,差別在於對null的處理
String()會回傳字串"null"
toString() 就會報錯,無法執行 

<script><br/> var a = null;<br/> document.write(&#39;String(null) 把空对象转换为字符串:&#39;+String(a)); <br/> document.write("<br>"); <br/> document.write(&#39;null.toString() 就会报错,所以后面的代码不能执行&#39;); <br/> document.write(a.toString()); <br/> document.write("因为第5行报错,所以这一段文字不会显示"); <br/></script>

運作效果:
String(null) 把空物件轉換成字串:null
null.toString() 就會報錯,所以後面的程式碼不能執行

null.toString() 就會報錯,所以後面的程式碼不能執行

Learn from yesterday, live for today, hope for tomorrow.

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn