鬆軟科技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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...