搜尋
首頁web前端js教程js型別轉換與引用型別詳解(Boolean_Number_String)_javascript技巧

一、型別轉換

1.轉換成字串
ECMAScript的Boolean值、數字和字符串的原始值的有趣之處在於它們是偽對象,這意味著它們實際上具有屬性和方法。
如:

複製程式碼 程式碼如下:

var sColor = "blue";
alert(sColor.length);//outputs "4"

總而言之,3種主要的原始值Boolean值、數字和字串都有toString()方法。 ECMAScript定義的所有物件都有toString()方法,無論它是偽對象,還是真的物件。

Boolean型的toString()方法只是輸出"true"或"false",結果由變數的值決定:

複製程式碼 程式碼如下:

var bFound = false;
alert(bFound.toString());//outputs "false"

Number類型的toString()方法比較特殊,它有兩種模式,即預設模式和基底模式,採用預設模式,toString()方法只是用對應的字串輸出數字值(無論是整數、浮點數或科學記數法) 。
複製程式碼 程式碼如下:

var iNum1 = 10;


var iNum1 = 10;

var iNum1 = 10;
;
alert(iNum1.toString()); //outputs "10"alert(fNum2.toString()); //outputs "10"採用Number型的toString()方法的基底模式,可以用不同的基底(進位基數)輸出數字。

複製程式碼


程式碼如下:

var iNum = 10;
var iNum = 10;

var iNum = 10;
alert(iNum. toString(2));  //outputs "1010"

alert(iNum.toString(8));  //outputs "12"alert(iNum.toString(16)); //outputs "A" 2.轉換成數字
ECMAScript提供了兩種把非數字的原始值轉換成數字的方法,即parseInt()和parseFloat()。
注意:只有對String類型(Number除外)呼叫這些方法,才能正確執行對其他型別回傳的都是NaN。

例如:



複製程式碼
程式碼如下:var iNum1 = parse(>var iNum1 = parse(>var iNum2 = parseInt("oxA"); //returns 10
var iNum3 = parseInt("22.5"); //returns 22
var iNum4 = parseInt(" blue"); //returns NaN


parseInt()方法也有基底模式,可以把二進位、八進位、十六進位或其他任何進位的字串轉換成十進位整數。第二個參數指定以哪一種進位來解析。


複製程式碼 程式碼如下:var iNum1 = parseInt("AF",16); // returns 175
var iNum2 = parseInt("10",2); // returns 2
var iNum3 = parseInt("10",8); //returns 8
var iNum4 = parseInt( "10",10); //returns 10


說明:如果十進制數包含前導0,那麼最好採用基數10,否則得到的是八進制的值。


複製程式碼 程式碼如下:
var iNum1 = parseInt("010"); returns 8var iNum2 = parseInt("010",8); //returns 8var iNum3 = parseInt("010",10);//returns 10parse ()方法與parseInt()方法的處理方式相似,從位置0開始查看每個字符,直到找到第一個非有效的字符為止,然後把該字符之前的字符串轉換成數字。對於這個方法來說,第一個出現的小數點是有效字元。如果用兩個小數點,第二個小數點就會被看作無效的。使用此方法的另一個不同之處在於,字串必須以十進位形式表示浮點數。 複製程式碼 程式碼如下:

var fNum1 = parseFloat("1234blue"); //returns 1234.0
var fNum2 = parseFloat("0xA"); //returns NaN
var fNum3 = parse25" //returns 22.5
var fNum4 = parseFloat("22.34.5");//returns 22.34
var fNum5 = parseFloat("0908");//returns NaN

3.強制型別轉換
ECMAScript中可用的3種強制型別轉換如下:
(1).Boolean(value)

把給定的值轉換成Boolean型。
當要轉換的值是至少有一個字元的字串、非0數字或物件時,Boolean()函數將傳回true。如果該值是空字串、數字0、undefined或null,它將傳回false。
如:

複製程式碼 程式碼如下:
var b1 = Boolean("" ); // false;
var b2 = Boolean("hi");//true
var b3 = Boolean(100);//true
var b4 = Boolean(null);//false
var b5 = Boolean(0);//false
var b6 = Boolean(new Object());//true

(2).Number(value)
把給定的值轉換成數字(可以是整數或浮點數)。
還記得parseInt()和parseFloat()方法只轉換第一個無效字元之前的字串,因此"4.5.6"將轉換為"4.5"。用Number()進行強制型別轉換,"4.5.6"將回傳NaN,因為整個字串值不能轉換成數字。如果字串能被完整地轉換,Number()將判斷是呼叫parseInt()方法還是呼叫parseFloat()方法。
如:

複製程式碼 程式碼如下:
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

(3).String(value)
把給定的值轉換成字串。
與呼叫toString()方法的唯一不同之處在於,對null或undefined值強制型別轉換可以產生字串而不引發錯誤:

複製程式碼 程式碼如下:
var s1 = String(null);//"null"
var oNull = null;
var s2 = oNull. toString();//causes an error


二、引用型別
引用型態通常叫作類(類),也就是說,遇到引用值時,所處理的就是物件。 ECMAScript定義了“物件定義”,邏輯上等價於其他程式設計語言中的類別。
1.Object類別

ECMAScript中的所有類別都由這個類別繼承而來,Object類別中的所有屬性和方法都會出現在其他類別中(被覆寫)。

Object類別的屬性:

(1).Constructor----對建立物件的函數的參考(指標)。對於Object類,該指標指向原始的object()函數。

(2).Prototype----對該物件的物件原型的引用。對於所有的類,它預設回傳Object物件的一個實例。

Object類別的方法:

(1).HasOwnProperty(property)----判斷物件是否有某個特定的屬性。必須用字串指定該屬性(例如:o.hasOwnProperty("name"))。

(2).IsPrototypeOf(object)----判斷該物件是否為另一個物件的原型。

(3).PropertyIsEnumerable(property)----判斷給定的屬性是否可以用for..in語句進行列舉。

(4).ToString()----傳回物件的原始字串表示。不同的ECMAScript實作具有不同的值。

(5).ValueOf()----傳回最適合該物件的原始值。對於許多類,該方法傳回的值都與toString()的傳回值相同。

2.Boolean類別
ECMAScript很少使用Boolean對象,即使使用,也不易理解。
例如:

複製程式碼 程式碼如下:
var o oalselean );
var bResult = oFalseObject  && true;//outputs  true;


原因:在Boolean表達式中,所有物件都會自動轉換為true。

3.Number類別
Number.MAX_VALUE等等特殊值都Number類別的靜態屬性。要得到數字物件的Number原始值,只需要使用valueOf()方法:
var iNumber = oNumberObject.valueOf();
除從Object類別繼承的標準方法外,Number類別還有幾個處理數值的專用方法。

toFixed()方法:
傳回的是具有指定位數小數的數字的字串表示。方法能表示具有0到20位小數的數字,超出這個範圍的值會引發錯誤。
如:

複製程式碼 程式碼如下:

var oNumberObject = new Number(9999umber );
aler(oNumberObject.toFixed(2));//outputs "99.00"

toExponential()方法:
傳回的是用科學記數法表示的數字的字串形式。此方法也有一個參數,指定要輸出的小數的位數。例如:
複製程式碼 程式碼如下:

var oNumberObj = new Number(99); 🎜>alert(oNumberObj.toExponential(1));//outputs "9.9e 1"

toPrecision()方法:
根據最有意義的形式來傳回數字的預定形式或指數形式。它有一個參數,即用於表示數字的數字總數(不包括指數)。

複製程式碼 程式碼如下:
var oNumberObj = new Number(99); alert(oNumberObj.toPrecision(1));//outputs "1e 2" ==100


可以看出,toPrecision()方法會對數進行捨入,從而盡可能接近真實值的數。
如:


複製程式碼 程式碼如下:
var oNumberObj = new NumberOumber );
alert(oNumberObj.toPrecision(2));// outputs "99"
alert(oNumberObj.toPrecision(3));// outputs "99.0"

toLocaleString()方法:
可以在頁面上格式顯示,如5210.50顯示為5,210.50,但是如果在使用其值時,應該用parseFloat($("N_YJJE").value.replace(//, /g, ""));的形式替換掉逗號,後得到其值。

注意:與Boolean對象相似,Number對像也很重要,不過應該少用這種對象,以避免潛在的問題。只要有可能,都使用數字的原始表示法。

4.String類別

String物件的valueOf()方法和toString()方法都會傳回String類型的原始值:

複製程式碼 程式碼如下:alert(oStringObj.valueOf() == oStringObj.toString());//outputs "true"


String類別具有屬性length,它是字串的字元數:


複製程式碼 程式碼如下:
var oStringObj = new String("hello world");
alert(oStringObj.length);outputs "11"


注意:即使字串包含雙位元組的字符,每個字符也只算一個字符。

charAt()方法: 傳回的是包含指定位置的字元的字串:



複製程式碼複製程式碼

複製程式碼

程式碼如下:


var oStringObj = new String("hello world");
alert(oStringObj.charAt(1));outputs "e" charCodeAt()方法: 傳回的是包含指定位置的字元代碼的字串:


複製程式碼
程式碼如下:var oStringObj = new String("hello world");alert(oStringObj.charCodeAt(1));outputs "101"
concat()方法:
用來把一個或多個字串連接到String物件的原始值。原String物件不變。
複製程式碼 程式碼如下:

var oStringObj = new String("hello ");
var sResult = oStringObj.concat("world");//oStringObj "world";更常見
alert(sResult);//outputs "hello world"
alert(oStringObj);//outputs "//outputs "//outputs " hello"

indexOf()和lastIndexOf()方法傳回的都是指定的子字串在另一個字串中的位置(或-1,如果沒有找到這個子字串)。這兩個方法的差異大於,indexOf()是從字串的開頭(位置0)開始檢索子字串,而lastIndexOf()則是從字串的結尾開始檢索子字串的。

localeCompare(),對字串進行比較(按照字母順序比較,越後越大)。此方法有一個參數-要進行比較的字串,傳回的是下列3個值之一:
1.如果String物件按照字母順序排在參數中的字串之前,傳回負數(最常見的是-1,不過真正的返回由實現決定的)。
2.如果String物件等於參數中的字串,則回傳0。
3.如果String物件依照字母順序排在參數中的字串之後,傳回正數(最常見的是1,不過真正的回傳由實作決定的)

slice()和substring()方法:
這兩個方法傳回的都是要處理的字串的子字串,都接受一個或兩個參數。第一個參數是要取得的子字串的起始位置,第二個參數是要取得子字串終止前的位置(終止位置的字元不包含大回傳的值內)。如果省略第二個參數,終止位元就預設為字串的長度。這兩個方法都不改變String物件本身的值。

複製程式碼 程式碼如下:

var oStringObj = new String("hello");
alert(oStringObj.slice(3));//outputs "lo world"
alert(oStringObj.slice(3,7));//outputs "lo w"

注意:對於負數參數,slice()方法會用字串的長度加上參數,substring()方法則將其作為0處理(也就是說將忽略它)。
複製程式碼 程式碼如下:

var oStringObj = new String("hello");
alert(oStringObj.slice(-3));//outputs "rld"相當於反向取
alert(oStringObj.substring(-3));//outputs "hello world"
alert (oStringObj.slice(3,-4));//outputs "lo w"
alert(oStringObj.substring(3,-4));//outputs "hel" substring()總是把較小的數字作為起始位,較大的數字作為終止位。

toLowerCase()、toLocalLowerCase()、toUpperCase()和toLocaleUpperCase():
前兩種方法把字串轉換成全小寫的,後兩種方法用來轉換字串成全大寫的。 toLocalLowerCase()和toLocaleUpperCase()方法是基於特定區域實現的。

記住:String類別的所有屬性和方法都可應用於String原始值上,因為它們是偽物件。

5.instanceof運算子
在使用typeof運算子時採用引用型別儲存值會出現一個問題,無論引用的是什麼類型的對象,它都會傳回"object"。 instanceof方法要顯示開發者明確確認物件為某特定型別。如:

複製程式碼 程式碼如下:

var oStrObj = new🎜>

var oStrObj = new String("helloworld" );  
alert(oStrObj instanceof String);//outputs "true"
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JavaScript和Web:核心功能和用例JavaScript和Web:核心功能和用例Apr 18, 2025 am 12:19 AM

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

了解JavaScript引擎:實施詳細信息了解JavaScript引擎:實施詳細信息Apr 17, 2025 am 12:05 AM

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python vs. JavaScript:學習曲線和易用性Python vs. JavaScript:學習曲線和易用性Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python vs. JavaScript:社區,圖書館和資源Python vs. JavaScript:社區,圖書館和資源Apr 15, 2025 am 12:16 AM

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C到JavaScript:所有工作方式從C/C到JavaScript:所有工作方式Apr 14, 2025 am 12:05 AM

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

JavaScript引擎:比較實施JavaScript引擎:比較實施Apr 13, 2025 am 12:05 AM

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

超越瀏覽器:現實世界中的JavaScript超越瀏覽器:現實世界中的JavaScriptApr 12, 2025 am 12:06 AM

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

使用Next.js(後端集成)構建多租戶SaaS應用程序使用Next.js(後端集成)構建多租戶SaaS應用程序Apr 11, 2025 am 08:23 AM

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器