javascript資料型別隱式和顯式轉換詳解
在javascript的實際編碼中,經常會有意無意的用到資料型別轉換。
先看一段程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var str="5"; var num=5; console.log(str+num);
由上面程式碼的執行結果可以看出,數字被轉換為字串型別,然後再進行字串連線,使用的隱式轉換。
下面就分別介紹一下javascript中資料的隱式轉換和顯示轉換。
javascript中的資料型別是鬆散的,並不像c#或者java中的資料是強型別的,看如下程式碼:
[JavaScript] 純文字檢視 複製程式碼var num = 5; num = "softwhy.com"; num = {};
在上面的程式碼中,首先宣告一個變數,兵賦值為數字5,這個時候變數就是數值型別的。
然後變數num被重新賦值為字串,這個時候變數就變成字串型別。
最後變數又被重新賦值為一個物件直接量,這個時候變數又成為一個引用型別的資料。
但是在實際應用中,要儘量避免上面的類似操作。
一.顯式轉換:
所謂的顯式轉換就是人為的方式對資料進行型別轉換。
1.轉換為數值型別:Number(mix)、parseInt(string,radix)、parseFloat(string)。
2.轉換為字串型別:toString(radix)、String(mix)。
3.Boolean(mix)。
下面分別對上面的幾種轉的規則進行一下介紹:
Number()函式:
(1).如果引數是布林值,true的話,返回值是1,是false,則返回0.
(2).如果引數是數值型別,則直接返回此數字。
(3).如果引數是null,則返回值是0.
(4).如果引數是undefined,則返回值是NaN。
(5).如果引數是字串型別的,那麼還要分如下情況:
如果字串只包含數字,則此函式會將其轉換為十進位制數字。
如果是空字串,則此函式會將其轉換為0。
如果字串非以上格式,那麼返回值是NaN。
(6).如果是物件,則呼叫物件的valueOf()方法,然後依據前面的規則轉換返回的值。
如果轉換的結果是NaN,則呼叫物件的toString()方法,再次依照前面的規則轉換返回的字串值。
各種物件呼叫valueOf()方法返回值規則如下:
1).陣列:陣列元素被轉轉換為字串,並且之間用逗號連線。
2).布林物件:返回true或者false。
3).Date物件:返回是時間戳。
4).Function物件:返回函式本身。
5).Number物件:返回數字字面量。
6).Object物件:返回物件本身。
7).String物件:返回字串字面量。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼console.log(Number(true)); console.log(Number(5)); console.log(Number(null)); console.log(Number(undefined)); console.log(Number("60")); console.log(Number("")); console.log(Number("60d")); console.log(Number([1,2,3]));
parseInt(string, radix)函式:
此函式可以將字串轉換為數字。
它的轉換規則這裡就不多介紹了,具體可以參閱javascript parseInt()一章節。
parseFloat(string)函式:
此函式的轉換規則和parseInt()函式基本是相同的,但是也有如下區別:
(1).此函式不會對十六進位制或者八進位制字面量字串引數進行轉換,只當作普通字串處理。
(2).字串中的第一個小數點會被當作浮點數正常處理。
toString(radix)方法:
物件都具有toString()方法,下面介紹一下各種物件的呼叫此方法的返回值:
(1).Array物件:將陣列元素用逗號連線起來返回一個字串。
(2).Boolean物件:返回"true"或者"false"。
(3).Date物件:返回一個時間日期的字串。
(4).Error物件:返回一個包含相關錯誤資訊的字串。
(5).函式物件:返回函式體本身。
(6).Number物件:返回對應的數字字串。
(7).String物件:返回字串直接量。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var num=new Number(100); var arr=[1,2,3,4,5]; function func(){ var y=x+z; } console.log(num.toString(16)) console.log(arr.toString()) console.log(func.toString())
String()函式:
此函式可以將任何型別的值轉換為字串,規則如下:
(1).如果有toString()方法,則呼叫該方法,並返回結果。
(2).如果是null,返回”null”。
(3).如果是undefined,返回”undefined”。
程式碼例項:
[JavaScript] 純文字檢視 複製程式碼var num=new Number(100); var arr=[1,2,3,4,5]; console.log(String(num)) console.log(String(arr))
Boolean()函式:
此函式可以將任何型別的值轉換為布林值,規則如下:
(1).false、”"、0、NaN、null、undefined作為引數,返回值是false。
(2).除了上面幾個特例之外,返回值都是true。
二.隱式型別轉換:
這裡就不多做介紹了,更多內容可以參閱javascript的隱式資料型別轉換一章節。
相關文章
- Java資料型別的顯式轉換和隱式轉換Java資料型別
- JavaScript 隱式資料型別轉換JavaScript資料型別
- JavaScript隱式型別轉換JavaScript型別
- 【關於Javascript】--- 隱式型別轉換篇JavaScript型別
- js顯式轉換和隱式轉換JS
- 資料型別隱式轉換導致的阻塞資料型別
- 33 個 JavaScript 核心概念系列(三): 顯式 (名義) 與 隱式 (鴨子)型別轉換JavaScript型別
- javascript 隱式轉換JavaScript
- 如何實現隱式型別轉換型別
- SQL Server資料庫中的資料型別隱式轉換問題SQLServer資料庫資料型別
- C語言的隱式型別轉換C語言型別
- 建構函式定義的隱式型別轉換函式型別
- JavaScript 資料型別轉換JavaScript資料型別
- javascript資料型別轉換JavaScript資料型別
- sql server 資料型別轉換函式SQLServer資料型別函式
- python函式每日一講 - float函式型別轉換詳解Python函式型別
- javascript中隱私型別轉換JavaScript型別
- Solidity語言學習筆記————11、隱式轉換和顯式轉換Solid筆記
- c++隱式型別轉換存在的陷阱C++型別
- JavaScript 資料型別轉換詳細解釋已經parseInt等JavaScript資料型別
- JavaScript 基本資料型別轉換JavaScript資料型別
- c#自定義型別的轉換方式operator,以及implicit(隱式)和explicit (顯示)宣告C#型別
- 徹底理解c++的隱式型別轉換C++型別
- C#資料型別及其轉換詳解C#資料型別
- c++ static_cast顯式型別轉換C++AST型別
- oracle資料隱式轉換規則Oracle
- JavaScript——資料型別詳解JavaScript資料型別
- [JAVA] Java 變數、表示式和資料型別詳解Java變數資料型別
- JavaScript資料型別分析及其轉換JavaScript資料型別
- JavaScript資料型別轉換總結JavaScript資料型別
- PostgreSQL 原始碼解讀(210)- 隱式型別轉換(func_match_argtypes)SQL原始碼型別
- PostgreSQL 原始碼解讀(209)- 隱式型別轉換(func_select_candidate)SQL原始碼型別
- golang 快速入門 [8.4]-常量與隱式型別轉換Golang型別
- 014 Rust死靈書之顯式型別轉換Rust型別
- 函式匹配和實參型別轉換函式型別
- 前端面試官必問系列之隱式型別轉換前端面試型別
- JavaScript 隱性型別轉換步驟淺析JavaScript型別
- C++四種顯式型別轉換操作符C++型別
- java隱式轉換Java