javascript進行強制類型轉(zhuǎn)換的方法

這篇文章給大家分享的是有關(guān)javascript進行強制類型轉(zhuǎn)換的方法的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)于2013年成立,先為濮陽等服務(wù)建站,濮陽等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為濮陽企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

強制轉(zhuǎn)換方法:1、使用ToString()、ToNumber()或ToBoolean()方法;2、使用String()、Number()或Boolean()方法;3、使用“+”或“-”運算符;4、使用“if()”、“while()”等語句。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

一、類型轉(zhuǎn)換規(guī)則

1.ToString

對于普通對象來說,除非自行定義toString方法,否則就會調(diào)用Object.prototype.toString()方法,如果對象有自己的toString方法,字符串化就會調(diào)用該方法并使用其返回值。

2.ToNumber

  • 對于基本類型其中true轉(zhuǎn)換為1,false轉(zhuǎn)換為0;undefined 轉(zhuǎn)換為 NaN,null 轉(zhuǎn)換為 0。

  • 對于對象類型會首先轉(zhuǎn)換成為基本類型值如果返回的是非數(shù)字的基本類型值,則再遵循基本類型轉(zhuǎn)換規(guī)則將其強制轉(zhuǎn)換為數(shù)字。為了將值轉(zhuǎn)換為相應(yīng)的基本類型值,抽象操作ToPrimitive會首先檢查該值是否有 valueOf() 方法。如果有并且返回基本類型值,再使用該值進行強制類型轉(zhuǎn)換。如果沒有就使用 toString() 的返回值(如果存在)來進行強制類型轉(zhuǎn)換。如果 valueOf() 和 toString() 均不返回基本類型值,會產(chǎn)生 TypeError 錯誤。

let a = {
    valueOf:function(){
        return "42";
    }
};
let b = {
    toString:function(){
        return "42";
    }
};
let c = [4,2];
c.toString = function(){
    return this.join(""); //"42"
};

Number(a);     //42
Number(b);     //42
Number(c);     //42
Number('');    //0
Number([]);    //0
Number(["abc"];//NaN

3.ToBoolean

JavaScript中的值可以分為能被強制轉(zhuǎn)換為false的值和能被強制轉(zhuǎn)換為true的值兩類。
假值:

  • undefined

  • null

  • false

  • +0、-0、NaN

  • ""

真值:除了以上列表的都可以理解為是真值,所有對象都是真值

let a1 = new Boolean( false );
let b1 = new Number( 0 );
let c1 = new String( "" );
let d1 = Boolean(a1 && b1 && c1); //true

let a2 = [];
let b2 = {};
let c2 = function(){};
let d2 = Boolean(a2 && b2 && c2); //true

二、顯示強制類型轉(zhuǎn)換

1.字符串與數(shù)字之間的顯示轉(zhuǎn)換

字符串和數(shù)字之間的轉(zhuǎn)換是通過 String(..)Number(..)這兩個內(nèi)建函數(shù)。
除了 String(..) 和 Number(..) 以外,還有其他方法可以實現(xiàn)字符串和數(shù)字之間的顯式 轉(zhuǎn)換:

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

a.toString() 是顯式的,不過其中涉及隱式轉(zhuǎn)換。因為 toString() 對 42 這樣的基本類型值不適用,所以 JavaScript 引擎會自動為 42 創(chuàng)建一個封裝對象,然后對該對象調(diào)用 toString()。這里顯式轉(zhuǎn)換中含有隱式轉(zhuǎn)換。

2.顯示轉(zhuǎn)換為布爾值

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(..) 是顯式的,但并不常用。顯式強制類型轉(zhuǎn)換為布爾值最常用的方法是 !!

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

【推薦學(xué)習(xí):javascript高級教程】

三、隱式強制類型轉(zhuǎn)換

1.字符串和數(shù)字之間的隱式強制類型轉(zhuǎn)換

(1)+運算符

即能用于數(shù)字加法,也能用于字符串拼接

如果 + 的其中一個操作數(shù)是字符串(或者通過對其調(diào)用 ToPrimitive 抽象操作得到字符串), 則執(zhí)行字符串拼接;否則執(zhí)行數(shù)字加法。因為數(shù)組的 valueOf() 操作無法得到簡單基本類型值,于是它轉(zhuǎn)而調(diào)用 toString()。因此下例中的兩個數(shù)組變成了 "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"
可以使用+運算符進行字符串轉(zhuǎn)換,將數(shù)字和空字符串 "" 相 + 來將其轉(zhuǎn)換為字符串
let a = 42;
let b = a + "";
b; // "42"
a + ""(隱式)和前面的String(a)(顯式)之間有一個細(xì)微的差別需要注意。

根據(jù) ToPrimitive抽象操作規(guī)則,a + ""會對a調(diào)用valueOf()方法,然后通過ToString抽象 操作將返回值轉(zhuǎn)換為字符串。而 String(a) 則是直接調(diào)用 ToString()。它們最后返回的都是字符串,但如果 a 是對象而非數(shù)字結(jié)果可能會不一樣

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

(2)從字符串強制類型轉(zhuǎn)換為數(shù)字的情況

-是數(shù)字減法運算符,因此a - 0會將a強制類型轉(zhuǎn)換為數(shù)字。也可以使用a * 1和a /1,因為這兩個運算符也只適用于數(shù)字,只不過這樣的用法不太常見

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

2.隱式強制類型轉(zhuǎn)換為布爾值

下面的情況會發(fā)生 布爾值隱式強制類型轉(zhuǎn)換:

(1) if (..)語句中的條件判斷表達式。

(2) for ( .. ; .. ; .. )語句中的條件判斷表達式(第二個)。

(3) while (..) 和 do..while(..) 循環(huán)中的條件判斷表達式。

(4) ? :中的條件判斷表達式。

(5) 邏輯運算符 ||(邏輯或)和 &&(邏輯與)左邊的操作數(shù)(作為條件判斷表達式)。

以上情況中,非布爾值會被隱式強制類型轉(zhuǎn)換為布爾值,遵循前面介紹過的 ToBoolean 抽象操作規(guī)則。

感謝各位的閱讀!關(guān)于“javascript進行強制類型轉(zhuǎn)換的方法”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

分享題目:javascript進行強制類型轉(zhuǎn)換的方法
地址分享:http://muchs.cn/article12/gdcjdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站維護、小程序開發(fā)、動態(tài)網(wǎng)站域名注冊、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)