JavaScript強制類型轉(zhuǎn)換和隱式類型轉(zhuǎn)換操作示例
本文實例講述了JavaScript強制類型轉(zhuǎn)換和隱式類型轉(zhuǎn)換。分享給大家供大家參考,具體如下:
在JavaScript中聲明變量不需指定類型, 對變量賦值也沒有類型檢查,同時JavaScript允許隱式類型轉(zhuǎn)換。這些特征說明JavaScript屬于弱類型的語言。
(1).轉(zhuǎn)換為字符串
轉(zhuǎn)換為字符串是應(yīng)用程序中的常見操作,javascript提供了toString方法。多數(shù)的JavaScript宿主環(huán)境(比如Node.js和Chrome)都提供了全局函數(shù)toString; 與此同時Object.prototype也定義了toString方法,使得所有對象都擁有轉(zhuǎn)換為字符串的能力。
例如將一個Number轉(zhuǎn)換為String:
var n = 1; n.toString(); // '1'
toString接受一個參數(shù)指定進制,默認(rèn)為10. 可以利用這個參數(shù)生成包括字母和數(shù)字的隨機字符串?!癭
Math.random().toString(36).substr(2);
``random生成一個0到1的隨機數(shù),36進制的字符集為[0-9a-z](36個),`substr`用來截掉起始的"0."。 另外`Object.prototype.toString`可以用來檢測JavaScript對象的類型:
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
強制類型轉(zhuǎn)換
強制類型轉(zhuǎn)換在C++中有兩種方式:用括號將類型聲明在變量之前;或者調(diào)用構(gòu)造函數(shù)。 在JavaScript中沒有類型關(guān)鍵字(只有一個var來聲明變量),因而只能調(diào)用構(gòu)造函數(shù):
Boolean(0) // => false - 零 Boolean(new object()) // => true - 對象 Number(undefined) // => NaN Number(null) // => 0 String(null) // => “null”
隱式類型轉(zhuǎn)換
隱式類型轉(zhuǎn)換是最為隱蔽的地方,不加注意的話很容易在這一點上出錯,對這一點的掌握也體現(xiàn)了JavaScript程序員經(jīng)驗。 JavaScript會自動轉(zhuǎn)換表達式中對象的類型以完成表達式求值。
(1)四則運算
加法運算符+是雙目運算符,只要其中一個是String類型,表達式的值便是一個String。
對于其他的四則運算,只有其中一個是Number類型,表達式的值便是一個Number。
對于非法字符的情況通常會返回NaN:
‘1' * ‘a(chǎn)' // => NaN,這是因為parseInt(a)值為NaN,1 * NaN 還是 NaN
(2)判斷語句
判斷語句中的判斷條件需要是Boolean類型,所以條件表達式會被隱式轉(zhuǎn)換為Boolean。 其轉(zhuǎn)換規(guī)則同Boolean的構(gòu)造函數(shù)。
var obj = {};
if(obj){
while(obj);
}
(3)Native代碼調(diào)用**
JavaScript宿主環(huán)境都會提供大量的對象,它們往往不少通過JavaScript來實現(xiàn)的。 JavaScript給這些函數(shù)傳入的參數(shù)也會進行隱式轉(zhuǎn)換。例如BOM提供的alert方法接受String類型的參數(shù):
alert({a: 1}); // => [object Object]
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript常用函數(shù)技巧匯總》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
Javascript驗證用戶輸入URL地址是否為空及格式是否正確
這篇文章主要介紹了Javascript驗證用戶輸入URL地址是否為空及格式是否正確,很實用,需要的朋友可以參考下2014-10-10
微信小程序開發(fā)之?dāng)?shù)據(jù)存儲 參數(shù)傳遞 數(shù)據(jù)緩存
本文主要介紹了微信小程序開發(fā)之?dāng)?shù)據(jù)存儲、參數(shù)傳遞、數(shù)據(jù)緩存的相關(guān)知識。具有很好的參考價值。下面跟著小編一起來看下吧2017-04-04
Javascript函數(shù)技巧學(xué)習(xí)
這篇文章主要介紹了Javascript函數(shù)技巧學(xué)習(xí),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-07-07
27個JavaScript數(shù)組常見方法匯總與實例說明
這篇文章主要介紹了JavaScript數(shù)組常見方法匯總與實例說明包括數(shù)組修改,數(shù)組增加,數(shù)組遍歷,數(shù)組排序等操作,需要的朋友可以參考下2022-12-12

