netJavaScript的變量確實是沒有類型的,就是說你varvariable后,可以隨便的給variable賦值,不會有任何問題??墒琴x給變量的值本身自己卻是有類型的,比如:String、Object、Boolean和Number等等。所以JS的變量還是有類型轉換的,當然很多時候JS解析引擎會默認處理很多的type convert。不過有的時候也需要我們強行轉換數(shù)據類型,最常見的就是:''+數(shù)字+數(shù)字,這種情況來生成字符串累加。 象:''+數(shù)字+數(shù)字,這樣的語法真的是比較的ugly,想我們在C中使用(int)xxx和C++中int(xxx)來做類型轉換多么的清晰明了。其實JavaScript也支持這樣的類型轉換語法的,例如:scriptlanguage="javascript"varstr='100';varnum=Number(100);alert(typeof(num)+':'+num);varobj=Object(str);alert(typeof(obj)+':'+obj);varbool=Boolean(str);alert(typeof(bool)+':'+bool);varnum=100;varstr=String(num);alert(typeof(str)+':'+str);varbool=Boolean(num);alert(typeof(bool)+':'+bool);varobj=Object(num);alert(typeof(obj)+':'+obj);varbool=true;varstr=String(bool);alert(typeof(str)+':'+str);varnum=Number(bool);alert(typeof(num)+':'+num);varobj=Object(bool);alert(typeof(obj)+':'+obj);varobj={};varstr=String(obj);alert(typeof(str)+':'+str);varnum=Number(obj);alert(typeof(num)+':'+num);varbool=Boolean(obj);alert(typeof(bool)+':'+bool);/script 除了Number(obj)轉換失敗,其它強行轉換表達式都能取得有意義的轉換效果。 使用強行轉換表達式最大的好處就是可以使程序代碼變得清晰,為本身就類型混亂的JavaScript編程減少混淆的可能。 至少我覺得類似:varstr = String(3) + String(3); 比varstr= '' + 3 + 3; 表意更清晰。 還有默認轉換比較混亂的地方,比如:"88"-8和"88"+8,前者的默認轉換是把字符串轉為數(shù)字(結果80),而后者又是把數(shù)字轉為字符串(結果"888")@_@,真是亂。所以使用變量類型強制轉換,就可能避免這類默認轉換帶來的潛在理解出錯的問題。
成都創(chuàng)新互聯(lián)公司-專業(yè)網站定制、快速模板網站建設、高性價比常德網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式常德網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋常德地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
1、object無法直接轉換為array,兩個是不同的類型和數(shù)據結構。
2、object中的結構是一個屬性=值的結構模式,而array是數(shù)字索引=值的結構模式
3、如果確實根據一定的業(yè)務邏輯能轉換,則需要循環(huán)
擴展資料:
JavaScript一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態(tài)功能。
日常用途
嵌入動態(tài)文本于HTML頁面。
對瀏覽器事件做出響應。
讀寫HTML元素。
在數(shù)據被提交到服務器之前驗證數(shù)據。
檢測訪客的瀏覽器信息。
控制cookies,包括創(chuàng)建和修改等。
基于Node.js技術進行服務器端編程。
參考資料:百度百科:JavaScript
Javascript中的類型轉換 :首先我們可以看C中間的強制類型轉換,只能存在整數(shù)可表示類型和浮點數(shù)類型之間,比如(int)2.45,這是可以的,但是他們和字符串之間都沒有強制轉換的可能,因為字符串實際是一個指針。因此不可能出現(xiàn)(char *)2.45就可以獲得"2.45"這個字符串的情況,反之也不能。而在C++中,我們可以創(chuàng)建一個類,并且重載強制轉換操作,來完成這種情況,那么就必須要求有相應的對象,但是對于基本類型,這也是不可以的。然后,因為JavaScript在對象模型上主要參考了Java,我們可以再參考一下Java的類型轉換:在Java中,基本類型之間的強制轉換也不是這樣的,比如,整數(shù)要轉換成字符串,必須使用Integer.toString()靜態(tài)方法或者String.valueOf()靜態(tài)方法,把字符串轉換為整數(shù),必須使用Integer.valueOf()??梢姡荒馨袹avaScript中的類型轉換看作為“強制類型轉換”。在JavaScript中,Double類型和Int類型都是看作為Number對象,因此無論是typeof 1還是typeof 1.0,都是返回number。這樣我們可以不用去管是Int還是Double類型,讓JavaScript解釋引擎內部去處理。
javascript有兩種數(shù)據類型的轉換方法:一種是將整個值從一種類型轉換為另一種數(shù)據類型(稱作基本數(shù)據類型轉換),另一種方法是從一個值中提取另一種類型的值,并完成轉換工作。
基本數(shù)據類型轉換的三種方法:1.轉換為字符型:String(); 例:String(678)的結果為"678"。2.轉換為數(shù)值型:Number(); 例:Number("678")的結果為678。3.轉換為布爾型:Boolean(); 例:Boolean("aaa")的結果為true。
1)返回數(shù)據類型
undefined
string
boolean
number
symbol(ES6)
Object
Function
2)強制類型轉換
Number(參數(shù)) 把任何類型轉換成數(shù)值類型。
parseInt(參數(shù)1,參數(shù)2) 將字符串轉換成整數(shù)
parseFloat()將字符串轉換成浮點數(shù)字
string(參數(shù)):可以將任何類型轉換成字符串
Boolean() 可以將任何類型的值轉換成布爾值。
3)隱式類型轉換
1.四則運算
加法運算符+是雙目運算符,只要其中一個是String類型,表達式的值便是一個String。
對于其他的四則運算,只有其中一個是Number類型,表達式的值便是一個Number。
對于非法字符的情況通常會返回NaN:
‘1’ * ‘a’ // = NaN,這是因為parseInt(a)值為NaN,1 * NaN 還是 NaN
2.判斷語句
判斷語句中的判斷條件需要是Boolean類型,所以條件表達式會被隱式轉換為Boolean。 其轉換規(guī)則同Boolean的構造函數(shù)。如:
var obj = {};if(obj){
while(obj);}
3.Native代碼調用
JavaScript宿主環(huán)境都會提供大量的對象,它們往往不少通過JavaScript來實現(xiàn)的。 JavaScript給這些函數(shù)傳入的參數(shù)也會進行隱式轉換。如BOM提供的alert方法接受String類型的參數(shù):
alert({a: 1}); // = [object Object]