摘要:類型轉(zhuǎn)換和表示一個空對象。如果有其他類型想轉(zhuǎn)換為或者類型,直接賦值就可以了。都能隱式的把數(shù)據(jù)類型轉(zhuǎn)為類型。。。時間時間二數(shù)字類型轉(zhuǎn)換為字符串默認(rèn)是進(jìn)制是一個對象類型,所以其他類型轉(zhuǎn)化為通常都是。
前言
javaScript是一門可以自由進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換的編程語言,類型轉(zhuǎn)換是javaScript很重要的特色(坑點很多!!!),大家想以后寫出更多嚴(yán)謹(jǐn)?shù)拇a(少出一些莫名其妙的Bug),還是需要好好掌握這個基礎(chǔ)知識,下面我跟大家一起來探討下JS的類型轉(zhuǎn)換。
類型介紹我們都知道JS的數(shù)據(jù)類型總共分為兩大類原始類型和對象類型。
原始類型有 Null、Undefined、 Boolean、 String、 Number、 Symbol(ES6)。
對象類型有 Object
關(guān)于這些數(shù)據(jù)類型的定義和介紹,網(wǎng)絡(luò)上已經(jīng)有很多的相關(guān)知識,這里就不再說了,給小伙伴推薦一個最權(quán)威的文檔 http://www.ecma-international...。
Null 和 Undefined
Null表示一個空對象。但是空對象也是一個對象,所以typeof null === "object"
Undefined表示聲明一個變量,但是卻還沒有賦值。
如果有其他類型想轉(zhuǎn)換為Undefined或者Null類型,直接賦值就可以了。
var num = 10; console.log(typeof num) // "number" num = undefined; console.log(typeof num) // "undefined"
沒啥好說的
Boolean
Boolean類型是一個基本的類型,其他類型轉(zhuǎn)換為Boolean類型規(guī)范如下
鏈接地址: http://www.ecma-international...
下面我總結(jié)了一些需要用到轉(zhuǎn)換為boolean類型的場景
A. 強(qiáng)轉(zhuǎn)為Boolean
var a = Boolean(1) // typeof a => "boolean", a=> true var b = Boolean(null) // b => false var d = new Boolean(false) // typeof d => "object", new Boolean 返回的是Object, 請注意Boolean 和 new Boolean的區(qū)別
B. ! ! 隱式轉(zhuǎn)換
! 會對數(shù)據(jù)進(jìn)行Boolean的隱式轉(zhuǎn)換,規(guī)則如上表格。
舉個例子
var a = !0 // a => true , 0的boolean為false,!進(jìn)行取反, 于是a => true
在開發(fā)中, 我們通過 ! ! 來獲取變量的boolean值
C. if 判斷
if 是一個很常見的判斷邏輯,當(dāng)我們使用if去進(jìn)行邏輯判斷的時候,javaScript首先會獲取數(shù)據(jù)的boolean值,規(guī)則如上表格, 然后再進(jìn)行判斷
if (0) {console.log(true)} else {console.log(false)} // 打印false if ([]) {console.log("array")} // 打印 array if ({}) {console.log("object")} // 打印 object if ("") {console.log(true)} else { console.log(false)} // 打印 false
Number
Number類型是一個基本的類型,其他類型轉(zhuǎn)換為Number類型規(guī)范如下
鏈接地址: http://www.ecma-international...
除了String和Object外, 其他類型轉(zhuǎn)為Number類型都好理解。
對于理解String與Object轉(zhuǎn)Number類型,有幾點個人的的心得,希望對大家有所幫助 (PS: 如果大家有時間的話,還是好好研究官方的規(guī)范。)
一. 0個空格(即"")或者多個空格(" "),返回結(jié)果是0
二. 把字符串左右兩邊的("或者")和空格都拿掉,如果這是一個數(shù)字類型,說明此字符能轉(zhuǎn)化為Number類型,否則返回NaN
三. 對象類型,首先調(diào)用valueof方法,返回基本類型的話,就執(zhí)行上表格中的轉(zhuǎn)換規(guī)則。否則,就調(diào)用toString方法,對返回的字符執(zhí)行上表格中的轉(zhuǎn)換規(guī)則
示例如下:
+null // => 0。 +、- 都能隱式的把數(shù)據(jù)類型轉(zhuǎn)為Number類型 +"" // => 0。 +true // => 1。 +"0x12" // => 18。 0x12為16進(jìn)制數(shù) +"1.2e2" // =>120。 1.2e2為科學(xué)計數(shù)法 +"a" // => NaN。 +[] // => 0。 [].valueOf是[], [].toString() => "", +""=> 0 +["22"] // => 22. ["22"].toString() => "22", +"22" => 22
留一個思考題。+Date() => NaN, +new Date() => 1518332170387能拿到時間戳。大家可以想一下為什么?
String
String類型是一個基本的類型,其他類型轉(zhuǎn)換為String類型規(guī)范如下
鏈接地址: http://www.ecma-international...
其他類型在轉(zhuǎn)為為String類型時候,規(guī)則應(yīng)該是很簡單明確,這里補(bǔ)充一些的注意事項
一. + 左右兩邊只要有一邊是字符串,另外一邊就會按照上表格的規(guī)則把轉(zhuǎn)為字符串,然后合并返回。
"1" + 1 // => "11" undefined + "a" // => "undefineda" "時間" + new Date() // => "時間Sun Feb 11 2018 15:15:42 GMT+0800 (CST)", new Date().toString() => Sun Feb 11 2018 15:15:42 GMT+0800 (CST)
二. 數(shù)字類型轉(zhuǎn)換為字符串默認(rèn)是10進(jìn)制
var a = 0x15; console.log(a.toString()) //=> "21" 1.2e2 + "10" // => "12010", 1.2e2 => 120, 120 + "10"=> "12010"
Object
Object是一個對象類型,所以其他類型轉(zhuǎn)化為Object通常都是new......。
下面是<
不多說了......
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/107429.html
摘要:總結(jié)通過使用和,我們能夠在數(shù)據(jù)和二進(jìn)制數(shù)據(jù)中進(jìn)行互相轉(zhuǎn)換。下一篇系列相關(guān)的博客,將會介紹如何通過來向后端傳遞二進(jìn)制數(shù)據(jù),以及如何處理通過收到的二進(jìn)制數(shù)據(jù)。 概述 上一篇博客我們說到了如何進(jìn)行數(shù)字類型(如Short、Int、Long類型)如何在JavaScript中進(jìn)行二進(jìn)制轉(zhuǎn)換,如果感興趣的可以可以閱讀本系列第二篇博客——WebSocket系列之JavaScript中數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為...
摘要:以和為例,說明中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)。對象用來表示通用的固定長度的原始二進(jìn)制數(shù)據(jù)緩沖區(qū)。中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)對和有了一個大概的了解,下面讓我們來看下它是如何進(jìn)行二進(jìn)制數(shù)據(jù)操作的。 概述 本文主要通過對JavaScript中數(shù)字?jǐn)?shù)據(jù)與二進(jìn)制數(shù)據(jù)之間的轉(zhuǎn)換,讓讀者能夠了解在JavaScript中如何對數(shù)字類型(包括但不限于Number類型)進(jìn)行處理。 二進(jìn)制數(shù)據(jù)在日常...
摘要:所以無論還是都會進(jìn)行類型轉(zhuǎn)換,唯一的區(qū)別,就是會置否而不會。這時候,肯定會有人問,假如說我有其他的數(shù)據(jù)類型呢,又不是數(shù)字又不是字符串,比如說數(shù)組啊,對象啊,布爾值啥的,那么如果是引用數(shù)據(jù)類型,則先轉(zhuǎn)為基本數(shù)據(jù)類型,再進(jìn)行比較。 上一章主要講了轉(zhuǎn)換到數(shù)字,字符串和布爾類型的一些知識點,那么這一講接著上面的繼續(xù)講。 思考下面這個問題: console.log(+123); // 123 ...
摘要:轉(zhuǎn)換為字符串規(guī)則如下圖代碼大致就是普通其他基本類型轉(zhuǎn)為字符串的話,就直接轉(zhuǎn)為其值的字符串表達(dá)形式,如果是基本類型的封裝對象,會先拆封,然后再轉(zhuǎn)為字符串,如果是普通對象,則會調(diào)用其內(nèi)部的值,如果是極大數(shù)和級小數(shù),將會進(jìn)行一些轉(zhuǎn)化,具體規(guī) 轉(zhuǎn)換為字符串規(guī)則如下圖代碼: console.log(String(undefined)); // undefined console.log(Str...
摘要:抽象相等和嚴(yán)格相等。首先,也是如果有對象的話,會把對象轉(zhuǎn)為基本類型值,在進(jìn)行比較。 這一節(jié),應(yīng)該算是強(qiáng)制類型轉(zhuǎn)換的最后一個小節(jié)了,這一部分呢,主要會講比較操作中遇到的強(qiáng)制類型轉(zhuǎn)換。 抽象相等(==)和嚴(yán)格相等(===)。 簡單且粗略的來說,抽象相等和嚴(yán)格相等的區(qū)別就是抽象相等在比較的時候,如果比較的兩個數(shù)類型不同,會先進(jìn)行類型轉(zhuǎn)換再比較,而嚴(yán)格類型呢,比較簡單粗暴一些,直接返回fals...
閱讀 2113·2021-11-16 11:45
閱讀 1183·2021-10-22 09:53
閱讀 4002·2021-09-07 10:26
閱讀 1209·2021-09-06 15:00
閱讀 2073·2019-08-28 18:09
閱讀 2795·2019-08-26 14:06
閱讀 3934·2019-08-26 13:48
閱讀 1295·2019-08-26 12:11