重学前端-js的类型问题
生活随笔
收集整理的這篇文章主要介紹了
重学前端-js的类型问题
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
JavaScript的語(yǔ)言類(lèi)型:
- undeifined
- boolean
- string
- number
- null
- symbol
- object
1.undefined
undeifined 是一個(gè)變量,而非是一個(gè)關(guān)鍵字。 而獲取他的值,則可以通過(guò)void 0 來(lái)獲得。void 0 == undefined 任何變量在賦值前都是undefined。而null是定義了但是為空的狀態(tài)。 復(fù)制代碼2.null
null類(lèi)型只有一個(gè)值,就是null,他的語(yǔ)義表示空值。 null不同于undefined,null是關(guān)鍵字,所以你可以放心用null關(guān)鍵字來(lái)獲取null值。 復(fù)制代碼3.Boolean
Boolean類(lèi)型會(huì)有兩個(gè)值,true和false。 是用來(lái)判斷邏輯意義上的真假。 復(fù)制代碼4.String
string用于表示文本數(shù)據(jù),string有最大長(zhǎng)度:2^53-1.string的意義并非字符串,而是字符串的UTF16編碼 復(fù)制代碼5.number
number是浮點(diǎn)數(shù),console.log( 0.1+0.2 == 0.3); //false其實(shí)。浮點(diǎn)數(shù)運(yùn)算的特點(diǎn),精度問(wèn)題復(fù)制代碼6.symbol
symbol 是ES6引入的新類(lèi)型,是一切非字符串的對(duì)象key的集合。ES6中整個(gè)對(duì)象系統(tǒng)被Symbol重塑。創(chuàng)建:(使用全局的symbol函數(shù))var mysymbol = Symbol("my symbol")Symbol.iterator---為每一個(gè)對(duì)象定義了默認(rèn)的迭代器,該迭代器可以被for...of循環(huán)調(diào)用var o = new Object//給對(duì)象Object添加iterator屬性 o[Symbol.iterator] = function() {var v = 0;return {next:function(){return {value: v++, done: v> 10}}} }for(var v of o) console.log(v)復(fù)制代碼7.對(duì)象
Object是最復(fù)雜的類(lèi)型,也是js的核心機(jī)制之一。對(duì)象是屬性的集合,屬性分為:數(shù)據(jù)屬性和訪問(wèn)器屬性,都是KEY-VALUE形式。key可以是字符串或者symbol類(lèi)型 復(fù)制代碼類(lèi)型轉(zhuǎn)換
StringToNumber
NumberToString
裝箱轉(zhuǎn)換是把基本類(lèi)型轉(zhuǎn)換成為對(duì)應(yīng)的對(duì)象。例子:symbol對(duì)象是無(wú)法使用new來(lái)調(diào)用的,但是我們可以利用裝箱機(jī)制來(lái)得到一個(gè)symbol對(duì)象。利用一個(gè)函數(shù)call來(lái)強(qiáng)迫產(chǎn)生裝箱。var symbolObject = ( function () {return this;}).call(Symbol("a"))console.log(symbolObject instanceof Symbol); //trueconsole.log(typeof symbolObject) // object或者利用Object函數(shù),在JavaScript代碼中顯式調(diào)用裝箱能力var symbolObject = Object((Symbol('a'));console.log(Object.ptototype.toString.call(symbolObject)); // [Object Symbol] 復(fù)制代碼拆箱轉(zhuǎn)換: ToPrimitive函數(shù)是對(duì)象類(lèi)型到基本類(lèi)型的轉(zhuǎn)化。對(duì)象到String和Number的轉(zhuǎn)換都遵循“先拆箱再轉(zhuǎn)換”。先將對(duì)象轉(zhuǎn)為基本類(lèi)型,再?gòu)幕绢?lèi)型轉(zhuǎn)化成String和NUmbervar o = {valueOf: () => { console.log("valueOf"); return {}}toString: () => { console.log("toString"); return {}}}o*2//1.先執(zhí)行valueOf//2.toString//3.typeErroro + ""//1.先執(zhí)行toString//2.tvalueOf//3.typeError顯式toPrimitive Symbol 來(lái)覆蓋原有的行為o[Symbol.toPrimitive] = () => {console.log("toPrimitive"); return "hello"}console,log(o + "") 復(fù)制代碼js字符串和數(shù)字之間的轉(zhuǎn)換
1.轉(zhuǎn)換函數(shù)
parseInt("10.5") // 10 parseInt("0xA") //10parseFloat("1234blue") // 1234 parseFloat("blue") //NaN復(fù)制代碼2.強(qiáng)制類(lèi)型轉(zhuǎn)換
Boolean(value) --- 把給定的值轉(zhuǎn)換成Boolean型 Number(value) --- 把給定的值轉(zhuǎn)化為數(shù)字(整數(shù)或者式浮點(diǎn)數(shù)) String(value) -- 把給定的值轉(zhuǎn)為字符串Boolean(100) // true Number(false) //0 Number(true) //1 復(fù)制代碼3.利用JS變量弱類(lèi)型轉(zhuǎn)換
var string = 1 + '12' // 112 string string = string - 0 // 112 number 復(fù)制代碼轉(zhuǎn)載于:https://juejin.im/post/5c4d6ec0e51d45520d30173a
總結(jié)
以上是生活随笔為你收集整理的重学前端-js的类型问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 春运前五日全国累计发送旅客3.49亿人次
- 下一篇: AAAI 2019 滴滴被收录论文全解读