首頁 >web前端 >js教程 >javascript怎麼進行型別強制轉換

javascript怎麼進行型別強制轉換

青灯夜游
青灯夜游原創
2021-05-18 14:28:503853瀏覽

強制轉換方法:1、使用String()、Number()或toString()函數進行字串與數字之間的顯示類型轉換;2、使用Boolean()函數將值轉換為布林值;3、使用「 」、「-」運算子進行字串和數字之間的隱式類型轉換。

javascript怎麼進行型別強制轉換

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

1.字串與數字之間的顯示強制類型轉換

字串和數字之間的轉換是透過String(..) Number(..) 這兩個內建函數。
除了String(..) 和Number(..) 以外,還有其他方法可以實作字串和數字之間的明確轉換:

let a = 42;
let b = a.toString();
let c = "3.14";
let d = +c;
b; // "42"
d; // 3.14

a.toString() 是明確的,不過其中涉及隱式轉換。因為 toString() 對 42 這樣的基本型別值不適用,所以 JavaScript 引擎會自動為 42 建立一個封裝對象,然後對該對象呼叫 toString()。這裡顯式轉換含有隱式轉換。

2.顯示轉換為布林值

let a = "0";
let b = [];
let c = {};
let d = "";
let e = 0;
let f = null;
let g;
Boolean( a ); // true
Boolean( b ); // true
Boolean( c ); // true
Boolean( d ); // false
Boolean( e ); // false
Boolean( f ); // false
Boolean( g ); // false

雖然 Boolean(..) 是明確的,但並不常用。明確強制類型轉換為布林值最常用的方法是!!

let a = "0";
let b = [];
let c = {};
let d = "";
let e = 0;
let f = null;
let g;
!!a; // true
!!b; // true
!!c; // true
!!d; // false
!!e; // false
!!f; // false
!!g; // false

3.字串和數字之間的隱式強制類型轉換

(1) 運算子

即能用於數字加法,也能用於字串拼接

如果的其中一個運算元是字串(或透過對其呼叫ToPrimitive 抽像操作得到字串),則執行字串拼接;否則執行數字加法。因為陣列的 valueOf() 運算無法得到簡單基本型別值,於是它轉而呼叫 toString()。因此下例中的兩個陣列變成了 "1,2" 和 "3,4"。將它們拼接後返回 "1,23,4"。

let a = "42";
let b = "0";
a + b; // "420"

let c = 42;
let d = 0;
c + d; // 42

let x = [1,2];
let y = [3,4];
x + y; // "1,23,4"

可以使用運算子進行字串轉換,將數字和空字串"" 相來將其轉換為字串

let a = 42;
let b = a + "";
b; // "42"

a " "(隱式)和前面的String(a)(顯式)之間有一個細微的差別需要注意。

根據 ToPrimitive抽像運算規則,a ""會對a呼叫valueOf()方法,然後透過ToString抽象 運算將傳回值轉換為字串。而 String(a) 則是直接呼叫 ToString()。它們最後回傳的都是字串,但如果a 是物件而非數字結果可能會不一樣

let a = {
    valueOf: function() { return 42; },
    toString: function() { return 4; }
};
a + "";         // "42"
String( a );    // "4"

#(2)從字串強制型別轉換為數字的情況

-是數字減法運算符,因此a - 0會將a強制型別轉換為數字。也可以使用a * 1和a /1,因為這兩個運算子也只適用於數字,只不過這樣的用法不太常見

let a = [3];
let b = [1];
a - b; // 2

【推薦學習:javascript高級教程

以上是javascript怎麼進行型別強制轉換的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn