成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【讀書筆記】JavaScriptの類型

cjie / 3660人閱讀

摘要:函數(shù)類型檢測(cè)是的子類型,其屬性為參數(shù)個(gè)數(shù),但是判斷結(jié)果有內(nèi)建函數(shù)原生函數(shù)常見的有,可能被當(dāng)作構(gòu)造函數(shù)來使用,創(chuàng)建出來的是封裝了的基本類型值。構(gòu)造函數(shù)可以不帶關(guān)鍵字。建議使用和來進(jìn)行顯示強(qiáng)制轉(zhuǎn)換。

前言

此篇小結(jié)來源與《你不知道的JavaScript》和《JavaScript高級(jí)程序設(shè)計(jì)》的結(jié)合??或許是的,龜速總結(jié)中...

七種內(nèi)置類型

null

undefined

boolean

number

string

object

symbol

除了object,其他都成為基本類型
變量沒有類型,值才有。
typeof總返回一個(gè)字符串。

null

類型檢測(cè)
因?yàn)閠ypeof檢測(cè)null的結(jié)果為object,所以在判斷的時(shí)候需要這樣判斷:

var a = null;
(!a && typeof null === "object"); //true
undefined

類型檢測(cè)

typeof undefined === "undefined"; //true

變量未持有值是undefined,但并不是未聲明,不過下面結(jié)果都是undefined:

var a;
typeof a;  //"undefined"
typeof b;  //"undefined"

安全防范
防止出現(xiàn)直接拋出未聲明的錯(cuò)誤,不能直接用if(變量)的方法來判斷變量是不是存在,可以用以下兩種方法:

if(typeof DEGUB  !== "undefined") {}
if(window.DEBUG) {}
boolean

類型檢測(cè)

typeof true === "boolean"; //true
number

類型檢測(cè)

typeof 42 === "number"; //true

JS并沒有真正意義上的整數(shù),使用雙精度格式(64位),42.0等同于42。

數(shù)字表示

默認(rèn)十進(jìn)制表示,小數(shù)最后的0被省略。

特別大和特別小的用指數(shù)顯示,與用toExponential()結(jié)果相同。

數(shù)字前面的0可省略。

小數(shù)點(diǎn)后小數(shù)最后的0也可以省略。

調(diào)用Number.prototype的方法:toFixed()顯示小數(shù)位數(shù)。

調(diào)用Number.prototype的方法:toPrecision()指定有效數(shù)位的顯示位數(shù)。

注意:運(yùn)算符會(huì)優(yōu)先認(rèn)為是有效數(shù)字字符

42.toFixed(3); //SynataxError
(42).toFiex(3); //42.000
0.42.toFixed(3); //0.420
42..toFixed(3); //0.420
42 .toFixed(3); //42.000

string

類型檢測(cè)

typeof "42" === "string"; //true

字符串和字符串?dāng)?shù)組

都是類數(shù)組,有l(wèi)ength屬性,有indexOf()和concat()方法。

字符串不可變(創(chuàng)建返回新值),數(shù)組可變,但a[i]在老版本IE中不允許,正確用a.CharAt(i)。

字符串可以借用方法處理,如:Arrray.prototype.join.call(a,"-");

數(shù)組有reverse()方法,字符串沒有。可以用以下方法(對(duì)復(fù)雜字符如Unicode、星號(hào)不適用):

var c=a.split().reverse().join("");

object

typeof返回object對(duì)象都包含一個(gè)內(nèi)部屬性[[Class]],但這個(gè)屬性無法直接訪問,
可以通過Object.prototype.toString.call()查看

Object.prototype.toString.call([1,2,3]);
// "[object Array]"

Tips:若是基本類型值,null和undefined

Object.prototype.toString.call(null);
// "[object Null]"
Object.prototype.toString.call(undefined);
// "[object Undefined]"

而其他的基本類型,會(huì)被包裝為相應(yīng)的封裝對(duì)象。

函數(shù)

類型檢測(cè)
function是object的子類型,其length屬性為參數(shù)個(gè)數(shù),但是typeof判斷結(jié)果有function:

type of function a(){} === "function"; //true

內(nèi)建函數(shù)/原生函數(shù):
常見的有String()、Number()、Boolean()、Array()、Object()、Function()、RegExp()、Date()、Error()、Symbol(),可能被當(dāng)作構(gòu)造函數(shù)來使用,創(chuàng)建出來的是封裝了的基本類型值。

Tips:
typeof返回的是對(duì)象類型的子類型。
萬不得已,不使用Object()、Function()、RegExp()。
Date.now()獲取當(dāng)前時(shí)間戳,在ES5之前是Date.getTime()。
ES5開始,使用Object.create(null)創(chuàng)建的對(duì)象[[Prototype]]屬性為null,且沒有valueOf()和toString()方法。

數(shù)組

類型檢測(cè)
數(shù)組也是object的子類型

type of [1,2,3] === "object"; //true

類數(shù)組轉(zhuǎn)換
1.slice()常用于把類數(shù)組轉(zhuǎn)換為數(shù)組:

Array.prototype.slice.call(arguments);

2.ES6中的Array.from(arguments)實(shí)現(xiàn)相同作用。

Array(...)
Array(...)構(gòu)造函數(shù)可以不帶new關(guān)鍵字。
若只有一個(gè)參數(shù),參數(shù)會(huì)被作為數(shù)組的預(yù)設(shè)長度(只是length變化了)。而且在不同瀏覽器中顯示的結(jié)果也有點(diǎn)差異。map()遍歷會(huì)失敗,而join()會(huì)成功,它假定數(shù)組不為空,然后通過length來遍歷。

var a = Array.apply(null,{length: 3});
a; // [undefined,undefined,undefined]

可以這樣代替創(chuàng)建。

注意點(diǎn)
delete可以把元素刪除,但length并不會(huì)發(fā)生變化。

封裝/拆封

可以用Object()還能輸自行封裝。
拆封對(duì)象可以用valueOf()函數(shù)。

symbol

符號(hào)是具有唯一性的特殊值,用它來命名對(duì)象屬性不容易導(dǎo)致重名,但控制臺(tái)無法直接訪問它的值。
類型檢測(cè)

typeof Symbol() === "symbol"; //true

定義
ES6z中一些預(yù)定義符號(hào),以Symbol靜態(tài)屬性形式出現(xiàn),如Symbol.create、Symbol.iterator等。

obj[Symbol.iterator] = function(){/*...*/}

定義時(shí)候不能帶new關(guān)鍵字。
通過Object.getOwnPropertySymbols()可以獲得。

類型轉(zhuǎn)換

JS的強(qiáng)制轉(zhuǎn)換總返回標(biāo)量基本類型值。
類型轉(zhuǎn)換發(fā)生在靜態(tài)語言的編譯階段,強(qiáng)制轉(zhuǎn)換發(fā)生在動(dòng)態(tài)類語言運(yùn)行時(shí)。

ToString

基本類型字符串轉(zhuǎn)化規(guī)則:
null -> null、undefined -> undefined
數(shù)字遵循通用規(guī)則,包括極小、極大、以及指數(shù)形式。

普通對(duì)象轉(zhuǎn)化規(guī)則:
除非自行定義,否則返回內(nèi)部屬性[[Class]]值。

JSON字符串化
JSON.stringify(...)
不安全的JSON值,如undefined、function、symbol和包含循環(huán)引用的都無法處理。
在對(duì)象里遇到undefined、function和symbol會(huì)自動(dòng)忽略,在數(shù)組中返回null(保證位置不變)。

ToNumber

true -> 1
false -> 0
undefined -> NaN
null -> 0

處理失敗返回NaN,對(duì)0開頭的十六進(jìn)制數(shù)不按十六進(jìn)制處理,按十進(jìn)制。
對(duì)于對(duì)象,會(huì)先轉(zhuǎn)換為相應(yīng)基本類型,再操作,先檢查valueOf()再用toString(),若都不返回基本類型值,產(chǎn)生TypeError錯(cuò)誤。

~運(yùn)算符

~返回2的補(bǔ)碼,大致等同于-(x+1)。

var a = "Hello World";
if(~a.indexOf("lo")){ //...}

~~來截除字符串,只適用于32位數(shù)字,對(duì)負(fù)數(shù)的處理也不太一樣。X|0也可以。

Number()、parseInt()

Number不允許解析字符串有非數(shù)字字符。
parseInt()的第一個(gè)字符是x或者X,轉(zhuǎn)換為十六進(jìn)制數(shù)字。0則轉(zhuǎn)換為八進(jìn)制數(shù)字。

Boolean

建議使用Boolean(a)和!!a來進(jìn)行顯示強(qiáng)制轉(zhuǎn)換。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107471.html

相關(guān)文章

  • 基本方法筆記 - 收藏集 - 掘金

    摘要:探討判斷橫豎屏的最佳實(shí)現(xiàn)前端掘金在移動(dòng)端,判斷橫豎屏的場(chǎng)景并不少見,比如根據(jù)橫豎屏以不同的樣式來適配,抑或是提醒用戶切換為豎屏以保持良好的用戶體驗(yàn)。 探討判斷橫豎屏的最佳實(shí)現(xiàn) - 前端 - 掘金在移動(dòng)端,判斷橫豎屏的場(chǎng)景并不少見,比如根據(jù)橫豎屏以不同的樣式來適配,抑或是提醒用戶切換為豎屏以保持良好的用戶體驗(yàn)。 判斷橫豎屏的實(shí)現(xiàn)方法多種多樣,本文就此來探討下目前有哪些實(shí)現(xiàn)方法以及其中的優(yōu)...

    maochunguang 評(píng)論0 收藏0
  • 讀書筆記:編寫高質(zhì)量javascript的68個(gè)方法

    摘要:第條盡量少使用全局對(duì)象避免聲明全局變量盡量聲明局部變量避免對(duì)全局變量增加屬性第條始終聲明局部變量第條避免使用語句第條熟練使用閉包的函數(shù)值包含了比調(diào)用他們時(shí)執(zhí)行所需要的代碼還要更多的信息。那些在其所涵蓋的作用域內(nèi)跟蹤變量的函數(shù)稱為閉包。 書還沒看完。一遍看,一遍寫讀書筆記。 這本書的序是JavaScript之父Brendan Eich寫的,作者是JavaScript標(biāo)準(zhǔn)化委員會(huì)專家??上?..

    Vicky 評(píng)論0 收藏0
  • Effective JavaScript讀書筆記(一)

    摘要:如果為假值,不傳或者傳入,函數(shù)都會(huì)返回但是,傳入這個(gè)值是完全有可能的,所以這種判斷形勢(shì)是不正確的或者使用來判斷也可以原始類型優(yōu)于封裝類型對(duì)象擁有六個(gè)原始值基本類型布爾值,數(shù)字,字符串,,和對(duì)象。 作為一個(gè)前端新人,多讀書讀好書,夯實(shí)基礎(chǔ)是十分重要的,正如蓋樓房一樣,底層穩(wěn)固了,才能越壘越高。從開始學(xué)習(xí)到現(xiàn)在,基礎(chǔ)的讀了紅寶書《JavaScript高級(jí)程序設(shè)計(jì)》,犀牛書《JavaScri...

    zhoutao 評(píng)論0 收藏0
  • 讀書筆記】你不知道的JavaScript--內(nèi)置類型

    摘要:有種內(nèi)置類型,分別是除對(duì)象之外,其他統(tǒng)稱為基本類型。另一個(gè)需要注意的是數(shù)組確切地說,數(shù)組也是的一個(gè)子類型我們可以通過下面的方法檢查變量是不是數(shù)組處理未聲明的變量時(shí),會(huì)返回這是因?yàn)橛幸粋€(gè)特殊的安全防范機(jī)制。 js有7種內(nèi)置類型,分別是undefined null boolean string number symbol object除對(duì)象之 Object 外,其他統(tǒng)稱為基本類型。符號(hào) ...

    Integ 評(píng)論0 收藏0
  • JavaScript高級(jí)程序設(shè)計(jì)》讀書筆記

    摘要:為了每個(gè)對(duì)象都能通過來檢測(cè),需要以或者的形式來調(diào)用,傳遞要檢查的對(duì)象作為第一個(gè)參數(shù),稱為。對(duì)象都是動(dòng)態(tài)的,這就意味著每次訪問對(duì)象,都會(huì)運(yùn)行一次查詢。是語言中立的用于訪問和操作和文檔。 一、第三章 基本概念: 1.理解參數(shù) 1.1 可以向函數(shù)中傳遞任意數(shù)量的參數(shù),并且可以通過arguments對(duì)象來訪問這些參數(shù)。 1.2 arguments對(duì)象只是類似數(shù)組,它通過length來確定傳進(jìn)來...

    dayday_up 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<