鬆軟科技Web課堂:JavaScript 類型轉換

来源:https://www.cnblogs.com/sysoft/archive/2019/12/13/12033535.html
-Advertisement-
Play Games

Number() 轉換數值,String() 轉換字元串,Boolean() 轉換布爾值。 JavaScript 數據類型 JavaScript 中有五種可包含值的數據類型: 字元串(string) 數字(number) 布爾(boolean) 對象(object) 函數(function) 有三種 ...


Number() 轉換數值,String() 轉換字元串,Boolean() 轉換布爾值。

JavaScript 數據類型

JavaScript 中有五種可包含值的數據類型:

  • 字元串(string)
  • 數字(number)
  • 布爾(boolean)
  • 對象(object)
  • 函數(function)

有三種對象類型:

  • 對象(Object)
  • 日期(Date)
  • 數組(Array)

同時有兩種不能包含值的數據類型:

  • null
  • undefined

typeof 運算符

您可以使用 typeof 運算符來確定 JavaScript 變數的數據類型。

實例

typeof "Bill"                 // 返回 "string"
typeof 3.14                   // 返回 "number"
typeof NaN                    // 返回 "number"
typeof false                  // 返回 "boolean"
typeof [1,2,3,4]              // 返回 "object"
typeof {name:'Bill', age:62}  // 返回 "object"
typeof new Date()             // 返回 "object"
typeof function () {}         // 返回 "function"
typeof myCar                  // 返回 "undefined" *
typeof null                   // 返回 "object"

 

請註意:

  • NaN 的數據類型是數值
  • 數組的數據類型是對象
  • 日期的數據類型是對象
  • null 的數據類型是對象
  • 未定義變數的數據類型是 undefined
  • 尚未賦值的變數的數據類型也是 undefined

您無法使用 typeof 去判斷 JavaScript 對象是否是數組(或日期)。

typeof 的數據類型

typeof 運算符不是變數。它屬於運算符。運算符(比如 /)沒有數據類型。

但是,typeof 始終會返回字元串(包含運算數的類型)。

constructor 屬性

constructor 屬性返回所有 JavaScript 變數的構造器函數。

實例

"Bill".constructor                 // 返回 "function String()  { [native code] }"
(3.14).constructor                 // 返回 "function Number()  { [native code] }"
false.constructor                  // 返回 "function Boolean() { [native code] }"
[1,2,3,4].constructor              // 返回 "function Array()   { [native code] }"
{name:'Bill', age:62}.constructor  // 返回" function Object()  { [native code] }"
new Date().constructor             // 返回 "function Date()    { [native code] }"
function () {}.constructor         // 返回 "function Function(){ [native code] }"

 

您可以通過檢查 constructor 屬性來確定某個對象是否為數組(包含單詞 "Array"):

實例

function isArray(myArray) {
    return myArray.constructor.toString().indexOf("Array") > -1;
}

 

或者更簡單,您可以檢查對象是否是數組函數:

實例

function isArray(myArray) {
    return myArray.constructor === Array;
}

 

您可以通過檢查 constructor 屬性來確定某個對象是否為日期(包含單詞 "Date"):

實例

function isDate(myDate) {
    return myDate.constructor.toString().indexOf("Date") > -1;
}

 

或者更簡單,您可以檢查對象是否是日期函數:

實例

function isDate(myDate) {
    return myDate.constructor === Date;
}

 

JavaScript 類型轉換

JavaScript 變數能夠被轉換為新變數以及另一種數據類型:

  • 通過使用 JavaScript 函數
  • 通過 JavaScript 本身自動轉換

把數值轉換為字元串

全局方法 String() 能夠把數字轉換為字元串。

它可用於任意類型的數字、文字、變數或表達式:

實例

String(x)         // 從數值變數 x 返回字元串
String(123)       // 從數值文本 123 返回字元串
String(100 + 23)  // 從表達式中的數值返回字元串

 

數字方法 toString() 同理。

實例

x.toString()
(123).toString()
(100 + 23).toString()

 

方法描述
toExponential() 返回字元串,對數字進行舍入,並使用指數計數法來寫。
toFixed() 返回字元串,對數字進行舍入,並使用指定位數的小數來寫。
toPrecision() 返回字元串,把數字寫為指定的長度。

把布爾轉換為字元串

全局方法 String() 能夠將布爾轉換為字元串。

String(false)        // 返回 "false"
String(true)         // 返回 "true" 

布爾方法 toString() 同理。

false.toString()     // 返回 "false"
true.toString()      // 返回 "true"

 

把日期轉換為字元串

全局方法 String() 可將日期轉換為字元串。

String(Date())      // 返回 "Fri Dec 13 2019 09:48:21 GMT+0800 (中國標準時間)"

日期方法 toString() 同理。

實例

Date().toString()   // 返回 "Fri Dec 13 2019 09:48:21 GMT+0800 (中國標準時間)"

 

方法描述
getDate() 獲得以數值計(1-31)的日
getDay() 或者以數值計(0-6)的周
getFullYear() 獲得四位的年(yyyy)
getHours() 獲得時(0-23)
getMilliseconds() 獲得毫秒(0-999)
getMinutes() 獲得分鐘(0-59)
getMonth() 獲得月(0-11)
getSeconds() 獲得秒(0-59)
getTime() 獲得時間(1970 年 1 月 1 日以來的毫秒)

把字元串轉換為數值

全局方法 Number() 可把字元串轉換為數字。

包含數字的字元串(比如 "3.14")轉換為數字(比如 3.14)。

空的字元串轉換為 0。

其他字元串將轉換為 NaN(Not a number,不是數字)。

Number("3.14")    // 返回 3.14
Number(" ")       // 返回 0
Number("")        // 返回 0
Number("99 88")   // 返回 NaN

 

方法描述
parseFloat() 解析字元串並返回浮點數。
parseInt() 解析字元串並返回整數。

一元 + 運算符

一元的 + 運算符可用於把變數轉換為數字:

實例

var y = "5";      // y 是字元串
var x = + y;      // x 是數字

 

如果無法轉換變數,則仍會成為數字,但是值為 NaN(Not a number):

實例

var y = "Bill";   // y 是字元串
var x = + y;      // x 是數字 (NaN)

把布爾轉換數值

全局方法 Number() 也可把布爾轉換為數字。

Number(false)     // 返回 0
Number(true)      // 返回 1

把日期轉換為數字

全局方法 Number() 可用於把日期轉換為數字。

d = new Date();
Number(d)          // 返回 1576201701989

 

日期方法 getTime() 同理。

d = new Date();
d.getTime()        // 返回 1576201701992,時間戳

 

自動類型轉換

如果 JavaScript 嘗試操作一種“錯誤”的數據類型,它會試圖將該值轉換為“正確”的類型。

結果並不總是你所期望的:

5 + null    // 返回 5         因為 null 被轉換為 0
"5" + null  // 返回 "5null"   因為 null 被轉換為  "null"
"5" + 2     // 返回 52        因為 2 被轉換為 "2"
"5" - 2     // 返回 3         因為 "5" 被轉換為 5
"5" * "2"   // 返回 10        因為 "5" 和 "2" 被轉換為 5 和 2

自動字元串轉換

JavaScript 自動調用變數的 toString() 函數,當您試圖“輸出”對象或變數時:

document.getElementById("demo").innerHTML = myVar;

// 如果 myVar = {name:"Fjohn"}  // toString 轉換為 "[object Object]"
// 如果 myVar = [1,2,3,4]       // toString 轉換為 "1,2,3,4"
// 如果 myVar = new Date()      // toString 轉換為 "Fri Dec 13 2019 09:48:21 GMT+0800 (中國標準時間)"

 

數字和布爾也會被轉換,但並不明顯:

// 如果 myVar = 123             // toString 轉換為 "123"
// 如果 myVar = true            // toString 轉換為 "true"
// 如果 myVar = false           // toString 轉換為 "false"

 

JavaScript 類型轉換表

下表中列出了將不同 JavaScript 值轉換為數字、字元串和布爾的結果:

原始值轉換為數字轉換為字元串轉換為邏輯
false 0 "false" false
true 1 "true" true
0 0 "0" false
1 1 "1" true
"0" 0 "0" true
"000" 0 "000" true
"1" 1 "1" true
NaN NaN "NaN" false
Infinity Infinity "Infinity" true
-Infinity -Infinity "-Infinity" true
"" 0 "" false
"20" 20 "20" true
"twenty" NaN "twenty" true
[ ] 0 "" true
[20] 20 "20" true
[10,20] NaN "10,20" true
["twenty"] NaN "twenty" true
["ten","twenty"] NaN "ten,twenty" true
function(){} NaN "function(){}" true
{ } NaN "[object Object]" true
null 0 "null" false
undefined NaN "undefined" false

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近在公司學習到ht編輯器的使用,關於使用方法上總結了一下,避免入坑。ht是做大屏數據可視化比較好的一款軟體,不過多介紹,官網上有具體使用方法和展示樣例,這裡我整理一下我用的最多的功能。##1、如何將HT編輯器生成的圖紙json問價嵌入到C#解決方案中?有兩種方式:(1)以本地文件的方式讀取(2)發 ...
  • 一、解決什麼問題 1、html中img引入的圖片地址沒有被替換,找不到圖片 2、html公共部分復用問題,如頭部、底部、浮動層等 二、html中img引入圖片問題解決 1、在index.html插入img,引用圖片<img src="../../assets/img/test.jpeg"> 2、np ...
  • 元素的樣式屬性是無法直接通過:對象.style.屬性來獲取(樣式在style屬性中設置) offset系列: offsetLeft:距離左邊位置的值 offsetTop:距離上面位置的值 offsetWidth:元素的寬(有邊框) offsetHeight:元素的高(有邊框) scroll系列: 滾 ...
  • where: { time:new Date()//增加一個數據介面的額外參數→時間戳 } ...
  • part6 課程介紹 scroll系列: 重點,每個屬性是什麼意思 封裝scroll系列的相關的屬性,固定導航欄案例 事件瀏覽器的滾動條事件--能夠寫出來 封裝動畫函數 緩動動畫 變速動畫 筋斗雲 獲取元素計算後的樣式屬性值 升級變速動畫 理解 能夠自己寫出最終版本的函數 手風琴案例 開機動畫案例 ...
  • 案例:圖標跟著滑鼠飛(有bug) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <style> img { position: absolute; } </style> </he ...
  • 關於post和get傳遞參數的區別 今天一朋友給我一段代碼,說使用request.querystrin得不到傳過來的值,我們一起找到很長時間,終於給找到了,錯誤的原因是他將form中的method參數寫成了get了,所以使用request.querystrin得不到值,改成post就解決了。現在列出 ...
  • 案例:完整的輪播圖 思路: 分5部分做 1. 獲取所有要用的元素 2. 做小按鈕,點擊移動圖標部分 3. 做右邊焦點按鈕,點擊移動圖片,小按鈕顏色一起跟著變 (克隆了第一圖到第六圖,用索引liObj.setAttribute("index", i),pic = this.getAttribute(" ...
一周排行
    -Advertisement-
    Play Games
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...