JavaScript強(qiáng)制類型轉(zhuǎn)換和隱式類型轉(zhuǎn)換操作示例
本文實(shí)例講述了JavaScript強(qiáng)制類型轉(zhuǎn)換和隱式類型轉(zhuǎn)換。分享給大家供大家參考,具體如下:
在JavaScript中聲明變量不需指定類型, 對(duì)變量賦值也沒(méi)有類型檢查,同時(shí)JavaScript允許隱式類型轉(zhuǎn)換。這些特征說(shuō)明JavaScript屬于弱類型的語(yǔ)言。
(1).轉(zhuǎn)換為字符串
轉(zhuǎn)換為字符串是應(yīng)用程序中的常見(jiàn)操作,javascript提供了toString方法。多數(shù)的JavaScript宿主環(huán)境(比如Node.js和Chrome)都提供了全局函數(shù)toString; 與此同時(shí)Object.prototype也定義了toString方法,使得所有對(duì)象都擁有轉(zhuǎn)換為字符串的能力。
例如將一個(gè)Number轉(zhuǎn)換為String:
var n = 1; n.toString(); // '1'
toString接受一個(gè)參數(shù)指定進(jìn)制,默認(rèn)為10. 可以利用這個(gè)參數(shù)生成包括字母和數(shù)字的隨機(jī)字符串?!癭
Math.random().toString(36).substr(2);
``random生成一個(gè)0到1的隨機(jī)數(shù),36進(jìn)制的字符集為[0-9a-z](36個(gè)),`substr`用來(lái)截掉起始的"0."。 另外`Object.prototype.toString`可以用來(lái)檢測(cè)JavaScript對(duì)象的類型:
var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] // Since JavaScript 1.8.5 toString.call(undefined); // [object Undefined] toString.call(null); // [object Null] // 自定義類型 toString.call(new MyClass); // [object Object]
轉(zhuǎn)換為數(shù)字
在JavaScript中可以直接用parseInt和parseFloat。 例如:
var iNum1 = parseInt("red"); //返回 NaN var fNum4 = parseFloat("11.22.44"); //返回 11.22
強(qiáng)制類型轉(zhuǎn)換
強(qiáng)制類型轉(zhuǎn)換在C++中有兩種方式:用括號(hào)將類型聲明在變量之前;或者調(diào)用構(gòu)造函數(shù)。 在JavaScript中沒(méi)有類型關(guān)鍵字(只有一個(gè)var來(lái)聲明變量),因而只能調(diào)用構(gòu)造函數(shù):
Boolean(0) // => false - 零 Boolean(new object()) // => true - 對(duì)象 Number(undefined) // => NaN Number(null) // => 0 String(null) // => “null”
隱式類型轉(zhuǎn)換
隱式類型轉(zhuǎn)換是最為隱蔽的地方,不加注意的話很容易在這一點(diǎn)上出錯(cuò),對(duì)這一點(diǎn)的掌握也體現(xiàn)了JavaScript程序員經(jīng)驗(yàn)。 JavaScript會(huì)自動(dòng)轉(zhuǎn)換表達(dá)式中對(duì)象的類型以完成表達(dá)式求值。
(1)四則運(yùn)算
加法運(yùn)算符+是雙目運(yùn)算符,只要其中一個(gè)是String類型,表達(dá)式的值便是一個(gè)String。
對(duì)于其他的四則運(yùn)算,只有其中一個(gè)是Number類型,表達(dá)式的值便是一個(gè)Number。
對(duì)于非法字符的情況通常會(huì)返回NaN:
‘1' * ‘a(chǎn)' // => NaN,這是因?yàn)閜arseInt(a)值為NaN,1 * NaN 還是 NaN
(2)判斷語(yǔ)句
判斷語(yǔ)句中的判斷條件需要是Boolean類型,所以條件表達(dá)式會(huì)被隱式轉(zhuǎn)換為Boolean。 其轉(zhuǎn)換規(guī)則同Boolean的構(gòu)造函數(shù)。
var obj = {}; if(obj){ while(obj); }
(3)Native代碼調(diào)用**
JavaScript宿主環(huán)境都會(huì)提供大量的對(duì)象,它們往往不少通過(guò)JavaScript來(lái)實(shí)現(xiàn)的。 JavaScript給這些函數(shù)傳入的參數(shù)也會(huì)進(jìn)行隱式轉(zhuǎn)換。例如BOM提供的alert方法接受String類型的參數(shù):
alert({a: 1}); // => [object Object]
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript常用函數(shù)技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- 詳解JavaScript中的強(qiáng)制類型轉(zhuǎn)換和自動(dòng)類型轉(zhuǎn)換
- JS中強(qiáng)制類型轉(zhuǎn)換的實(shí)現(xiàn)
- 重學(xué)JS之顯示強(qiáng)制類型轉(zhuǎn)換詳解
- 詳解JavaScript中的強(qiáng)制類型轉(zhuǎn)換
- JS在if中的強(qiáng)制類型轉(zhuǎn)換方式
- Javascript Boolean、Nnumber、String 強(qiáng)制類型轉(zhuǎn)換的區(qū)別詳細(xì)介紹
- Javascript 強(qiáng)制類型轉(zhuǎn)換函數(shù)
- 深入理解JavaScript強(qiáng)制類型轉(zhuǎn)換
相關(guān)文章
通過(guò)js把一個(gè)數(shù)組修改成多層嵌套多個(gè)數(shù)組的幾種方法總結(jié)
這篇文章主要介紹了通過(guò)js把一個(gè)數(shù)組修改成多層嵌套多個(gè)數(shù)組的幾種方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06使用JavaScript判斷用戶輸入的是否為正整數(shù)(兩種方法)
在項(xiàng)目開(kāi)發(fā)中,需要使用JavaScript驗(yàn)證用戶輸入的是否為正整數(shù),下面小編給大家分享兩種方法,需要的朋友參考下2017-02-02JavaScript面試之如何實(shí)現(xiàn)數(shù)組拍平(扁平化)方法
數(shù)組扁平化是指將一個(gè)多維數(shù)組變?yōu)橐痪S數(shù)組,下面這篇文章主要給大家介紹了關(guān)于JavaScript面試之如何實(shí)現(xiàn)數(shù)組拍平(扁平化)方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-11-11詳解如何使用JavaScript中Promise類實(shí)現(xiàn)并發(fā)任務(wù)控制
在JavaScript中,Promise是一種用于管理異步操作的強(qiáng)大工具,但是,有時(shí)候需要更高級(jí)的控制,以限制同時(shí)執(zhí)行的任務(wù)數(shù)量,以避免系統(tǒng)資源超負(fù)荷,本文將深入探討JavaScript中的并發(fā)任務(wù)控制,并介紹如何創(chuàng)建一個(gè)自定義的Promise類——ConcurrentPromise2023-08-08webpack打包js文件及部署的實(shí)現(xiàn)方法
這篇文章主要介紹了webpack打包js文件的方法及webpack打包后的JS文件如何部署,需要的朋友可以參考下2017-12-12js實(shí)現(xiàn)Select頭像選擇實(shí)時(shí)預(yù)覽代碼
這篇文章主要介紹了js實(shí)現(xiàn)Select頭像選擇實(shí)時(shí)預(yù)覽代碼,涉及javascript動(dòng)態(tài)遍歷及設(shè)置select選項(xiàng)的技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-08-08layer頁(yè)面跳轉(zhuǎn),獲取html子節(jié)點(diǎn)元素的值方法
今天小編就為大家分享一篇layer頁(yè)面跳轉(zhuǎn),獲取html子節(jié)點(diǎn)元素的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09js和jquery中循環(huán)的退出和繼續(xù)學(xué)習(xí)記錄
這篇文章主要介紹了js和jquery中循環(huán)的退出和繼續(xù)學(xué)習(xí)記錄,下哦功能不簡(jiǎn)單,需要的朋友可以參考下2014-09-09JS實(shí)現(xiàn)圖片橫向滾動(dòng)效果示例代碼
圖片橫向滾動(dòng)效果,大家可能都已經(jīng)很熟悉了,本文為大家介紹下使用js實(shí)現(xiàn)橫向滾動(dòng)效果,喜歡的朋友可以參考下,希望對(duì)大家有所幫助2013-09-09