摘要:的數(shù)據(jù)類型,共有七種數(shù)值整數(shù)和小數(shù)比如和。布爾值表示真?zhèn)蔚膬蓚€特殊值,即真和假。符號其中是新增的基本數(shù)據(jù)類型,本文僅介紹前六種。轉(zhuǎn)換規(guī)則是除了或空字符串六個值被轉(zhuǎn)為,其他值都視為。屬性對象的每一個鍵名又稱為屬性,它的鍵值可以是任何數(shù)據(jù)類型。
一、簡介
JavaScript 語言的每一個值,都屬于某一種數(shù)據(jù)類型。JavaScript 的數(shù)據(jù)類型,共有七種:
數(shù)值(number):整數(shù)和小數(shù)(比如1和3.14)。
字符串(string):文本(比如Hello World)。
布爾值(boolean):表示真?zhèn)蔚膬蓚€特殊值,即true(真)和false(假)。
undefined:表示“未定義”或不存在。
null:表示空值,即此處的值為空。
對象(object):各種值組成的集合。
符號(Symbol)
其中Symbol是ES6新增的基本數(shù)據(jù)類型,本文僅介紹前六種。
二、數(shù)據(jù)類型詳解1. 數(shù)值(number):
1.1 整數(shù)和浮點數(shù)
JavaScript 內(nèi)部,所有數(shù)字都是以64位浮點數(shù)形式儲存,即使整數(shù)也是如此。
1 === 1.0 // true
1.2 精度
在國際標(biāo)準(zhǔn) IEEE 754中,JavaScript 浮點數(shù)的64個二進(jìn)制位,從最左邊開始,第1位數(shù)字符號位決定了一個數(shù)的正負(fù)(0為正數(shù),1為負(fù)數(shù)),第2~12位指數(shù)部分決定了數(shù)值的大小,第13~64小數(shù)部分決定了數(shù)值的精度。
1.3 數(shù)值的進(jìn)制
JavaScript 對整數(shù)提供四種進(jìn)制的表示方法:十進(jìn)制、十六進(jìn)制、八進(jìn)制、二進(jìn)制。
十進(jìn)制:沒有前導(dǎo)0的數(shù)值。
八進(jìn)制:有前綴0o或0O的數(shù)值。
十六進(jìn)制:有前綴0x或0X的數(shù)值。
二進(jìn)制:有前綴0b或0B的數(shù)值。
1.4 NaN
NaN意為Not a Number,主要出現(xiàn)在將字符串解析成數(shù)字出錯的場合,如:
618 - "x" // NaN
NaN不等于任何值,包括它本身。:
NaN === NaN // false
2. 字符串(string):
用""或""引起來,里面沒有包含任何內(nèi)容則是空字符串,長度為0。而里面有空格的稱為空格字符串,長度為1,兩者是不一樣的。
2.1 多行字符串
如果字符串分成多行,可以在每一行的尾部使用反斜杠,不加則會報錯。除了使用反斜杠外,也可以通過連接運(yùn)算符(+)來連接多個單行字符串,兩種方法所得結(jié)果一致,建議使用連接運(yùn)算符(+)。
var longString = "Long long long string"; longString // "Long long long string"
var longString = "Long " + "long " + "long " + "string"; longString // "Long long long string"
ES6中新增反引號(`)來寫多行字符串,而這個多行字符串的length會包含回車的長度。
2.2 轉(zhuǎn)義
反斜杠()在字符串內(nèi)有特殊含義,用來表示一些特殊字符,所以又稱為轉(zhuǎn)義符。常需要用反斜杠轉(zhuǎn)義的特殊字符有:
0 :null(u0000)
n :換行符(u000A)
r :回車鍵(u000D)
t :制表符(u0009)
" :單引號(u0027)
" :雙引號(u0022)
:反斜杠(u005C)
2.3 length屬性
length屬性返回字符串的長度,該屬性由字符串本省決定,無法通過賦值改變。
var s = "mamamoo"; s.length // 7 s.length = 5; s.length // 7
3. 布爾值(boolean):
布爾值只有“真”和“假”這兩個值?!罢妗庇藐P(guān)鍵字true表示,“假”用關(guān)鍵字false表示。如果 JavaScript 預(yù)期某個位置應(yīng)該是布爾值,會將該位置上現(xiàn)有的值自動轉(zhuǎn)為布爾值。轉(zhuǎn)換規(guī)則是除了undefined、null、false、0、NaN、""或""(空字符串)六個值被轉(zhuǎn)為false,其他值都視為true。
4. undefined和null:
null與undefined都可以表示“沒有”,含義非常相似。兩者的區(qū)別是:
null是一個表示“空”的對象,轉(zhuǎn)為數(shù)值時為0;undefined是一個表示"此處無定義"的原始值,轉(zhuǎn)為數(shù)值時為NaN。
變量沒有值返回的是undefined。
當(dāng)有一個對象object但還不想賦值時推薦使用null;當(dāng)有一個非對象但還不想賦值時推薦使用undefined。
5. 對象(object):
5.1 生成方法
對象簡單來說就是一組“鍵值對”(key-value)的集合,是一種無序的復(fù)合數(shù)據(jù)集合。
生成方法是用大括號把鍵值對包起來后賦值給變量,兩個鍵值對之間用逗號分隔?!埃骸鼻笆擎I名,“:”后是鍵值。如:
var obj = { foo: "Hello", bar: "World" };
5.2 鍵名與鍵值
對象的所有鍵名都是字符串,要加引號,不加也會自動轉(zhuǎn)為字符串。如果鍵名不符合標(biāo)識名的條件(比如第一個字符為數(shù)字,或者含有空格或運(yùn)算符),且也不是數(shù)字,則必須加上引號,否則會報錯。而鍵值是什么類型就用該類型的格式。
5.3 屬性
對象的每一個鍵名又稱為“屬性”(property),它的“鍵值”可以是任何數(shù)據(jù)類型。
屬性的讀取
讀取對象的屬性,有兩種方法,一種是使用點運(yùn)算符,還有一種是使用方括號運(yùn)算符。
var obj = { p: "Hello World" }; obj.p // "Hello World" obj["p"] // "Hello World",[]內(nèi)""一定要加
屬性的刪除delete(無value無key)
var obj = { p: 1 }; Object.keys(obj) // ["p"] delete obj.p // true obj.p // undefined Object.keys(obj) // []
屬性的查看Object.keys
var obj = { key1: 1, key2: 2 }; Object.keys(obj); // ["key1", "key2"]
屬性是否存在:in
in運(yùn)算符用于檢查對象是否包含某個屬性(注意,檢查的是鍵名,不是鍵值),如果包含就返回true,否則返回false。
屬性的遍歷:for...in 循環(huán)
var obj = {a: 1, b: 2, c: 3}; for (var i in obj) { console.log("鍵名:", i); console.log("鍵值:", obj[i]); } // 鍵名: a // 鍵值: 1 // 鍵名: b // 鍵值: 2 // 鍵名: c // 鍵值: 3三、如何知道變量類型?
使用type of可得變量的數(shù)據(jù)類型,如:
var t = 619; type of t;//"number"
特別注意的是:
當(dāng)數(shù)據(jù)類型為null時,用type of打出的數(shù)據(jù)類型卻是"object"。
當(dāng)定義了一個函數(shù)時,用type of打出的數(shù)據(jù)類型卻是"function"。
四、數(shù)據(jù)類型的轉(zhuǎn)換4.1 轉(zhuǎn)為string
使用toString()
var t = 619; t.toString();//"619"
null沒有toString這個API,不能使用toString,會報錯
var n = null; n.toString; //Uncaught TypeError: Cannot read property "toString" of null
undefined也會報錯
var n = undefined; n.toString(); //Uncaught TypeError: Cannot read property "toString" of undefined
object使用toString會得到"[object Object]"。
var object = {name:"po"}; object.toString() //"[object Object]"
通過與空字符串相加(+"")也能轉(zhuǎn)化為字符串類型,且null、undefined也適用。
使用window.String()
window.String(null)//"null"
為什么1 + "1" = "11"?
這是因為當(dāng)兩個不同數(shù)據(jù)類型相加時,會優(yōu)先選擇轉(zhuǎn)化為字符串,所以1 + "1"相當(dāng)于1.toString() + "1",于是結(jié)果為兩個字符串1相加,即字符串11。
4.2 轉(zhuǎn)為布爾
使用Boolean()
Boolean(0)//false Boolean("")//false Boolean(" ")//true
使用!!
!! ""http://false !! " "http://true
五個falsy值:0、NaN、空字符串、null、undefined
4.3 轉(zhuǎn)為Number
使用Number()
Number("1")//1
使用parseInt()
//第二位參數(shù)要寫,是表示進(jìn)制
使用parseFloat()
parseFloat("1.23")//1.23
使用 -0
"1"-0//1
使用 +
+ null//0
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/98802.html
摘要:的數(shù)據(jù)類型轉(zhuǎn)換一中的數(shù)據(jù)類型中的數(shù)據(jù)類型一共有六種,即,,,,,。數(shù)據(jù)類型指的是數(shù)字,包括整型和浮點數(shù)。如布爾類型只有和,用于條件判斷。數(shù)據(jù)類型的相互轉(zhuǎn)換任意數(shù)據(jù)類型轉(zhuǎn)字符串特殊用法任意數(shù)據(jù)類型轉(zhuǎn)數(shù)字任意數(shù)據(jù)類型轉(zhuǎn)布爾值五個值 JS的數(shù)據(jù)類型轉(zhuǎn)換 一、js中的數(shù)據(jù)類型Js中的數(shù)據(jù)類型一共有六種,即number,string,boolean,underfine,null,object。 ...
摘要:一任意類型轉(zhuǎn)換為字符串要大寫這種方法可以將,,轉(zhuǎn)化為字符串,但是無法轉(zhuǎn)換,這兩種數(shù)據(jù)類型要大寫是一個全局函數(shù),功能更強(qiáng)大可以轉(zhuǎn)換基本上所有類型為字符串這是最簡單最便捷的一種方法,把加上一個空字符串就可以快速將其他類型轉(zhuǎn)換成字符串二任意類型轉(zhuǎn) 一、任意類型轉(zhuǎn)換為字符串 1、x.toString(S要大寫) 這種方法可以將number,boolean,object轉(zhuǎn)化為字符串,但是無法轉(zhuǎn)換...
摘要:于是,轉(zhuǎn)換層就此誕生。轉(zhuǎn)換層顧名思義,把接口數(shù)據(jù)格式轉(zhuǎn)換成頁面所需要格式。第二版設(shè)計在第一版設(shè)計中,遇到轉(zhuǎn)換方法與使用頁面對應(yīng)不明確的問題。在第三版設(shè)計,也是從調(diào)整劃分子模塊方式下手,改回數(shù)據(jù)類型的維度劃分,同時,規(guī)范方法命名。 前言 在工作中,經(jīng)常會遇到,接口的數(shù)據(jù)格式與頁面布局/交互不匹配的情況,需要前端進(jìn)行處理。 心想:數(shù)據(jù)處理與業(yè)務(wù)無關(guān),單獨抽離一個模塊來寫吧。 于是,轉(zhuǎn)換層就...
摘要:于是,轉(zhuǎn)換層就此誕生。轉(zhuǎn)換層顧名思義,把接口數(shù)據(jù)格式轉(zhuǎn)換成頁面所需要格式。第二版設(shè)計在第一版設(shè)計中,遇到轉(zhuǎn)換方法與使用頁面對應(yīng)不明確的問題。在第三版設(shè)計,也是從調(diào)整劃分子模塊方式下手,改回數(shù)據(jù)類型的維度劃分,同時,規(guī)范方法命名。 前言 在工作中,經(jīng)常會遇到,接口的數(shù)據(jù)格式與頁面布局/交互不匹配的情況,需要前端進(jìn)行處理。 心想:數(shù)據(jù)處理與業(yè)務(wù)無關(guān),單獨抽離一個模塊來寫吧。 于是,轉(zhuǎn)換層就...
摘要:業(yè)務(wù)越復(fù)雜,邏輯就越復(fù)雜,判斷就越多比較判斷比較判斷是比較兩個值,返回一個布爾值,表示是否滿足比較條件。對于非布爾值的數(shù)據(jù),取反運(yùn)算符會自動將其轉(zhuǎn)為布爾值。 前端學(xué)習(xí):教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關(guān)注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:========== JavaScript-判斷 代碼中,多多少少會有判斷語句。業(yè)務(wù)越復(fù)雜,邏輯就越...
閱讀 2258·2021-11-23 09:51
閱讀 1091·2021-11-22 15:35
閱讀 4893·2021-11-22 09:34
閱讀 1626·2021-10-08 10:13
閱讀 3029·2021-07-22 17:35
閱讀 2561·2019-08-30 15:56
閱讀 3093·2019-08-29 18:44
閱讀 3110·2019-08-29 15:32