国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript類型介紹

K_B_Z / 2478人閱讀

摘要:我們?cè)儆脧?fù)合條件來(lái)檢測(cè)一下值的類型由此我們知道,隱式強(qiáng)制類型轉(zhuǎn)換成了反值為說(shuō)明的布爾值為,并對(duì)它的類型做出全等比較,最后返回。

我的第一篇文章

從開(kāi)始學(xué)前端直至現(xiàn)在已有一年的時(shí)間了,期間遇見(jiàn)了很多事情,也經(jīng)歷了各式各樣的技術(shù)問(wèn)題,為了讓自己擺脫這些這些問(wèn)題,最后養(yǎng)成了看書(shū)的習(xí)慣。因?yàn)槊看慰赐昕傆X(jué)得自己內(nèi)功又增了,哪怕只是一點(diǎn)。可惜的是每次看完都會(huì)忘掉一些,尤其是沒(méi)有自己的實(shí)踐和知識(shí)點(diǎn)太多時(shí)總會(huì)遺忘一些,但我不希望這種事情發(fā)生,

可能只是因?yàn)檫@一點(diǎn),以后就會(huì)找?guī)滋斓腷ug,這是每個(gè)程序員都不敢預(yù)想的場(chǎng)景。最后我決定把我每天對(duì)知識(shí)的累積,用我理解的角度去記錄下來(lái)。筆記和文章唯一的不同前者是私有,后者是公開(kāi)的,希望通過(guò)我對(duì)它理解可以幫助他人,也請(qǐng)大家能指出文章中的問(wèn)題,感激不盡。

類型

ECMAScript語(yǔ)言中所有的值都對(duì)應(yīng)一個(gè)類型。語(yǔ)言類型包括:Undefined,Null,Boolean,String,Number,Object。對(duì)于語(yǔ)言引擎和開(kāi)發(fā)人員來(lái)說(shuō),類型是值的內(nèi)部特征,它定義了值的行為,是所有編程語(yǔ)言的共有的概念,并使其區(qū)別于其他值。

拋開(kāi)學(xué)術(shù)界對(duì)類型定義的分歧,為什么說(shuō)JavaScript是否有類型也很重要呢?讓我們來(lái)詳細(xì)介紹一下,關(guān)于JavaScript類型這部分的知識(shí)。

內(nèi)置類型

首先JavaScript有七種內(nèi)置類型:

空值(Null)

未賦值(Undefined)

字符串(String)

數(shù)字(Number)

對(duì)象(Object)

布爾值(Boolean)

符號(hào)(Symbol ES6中新增)

注: 除對(duì)象以外其他統(tǒng)稱為基本類型.

下面我們用typeof查看這七種類型值,但是結(jié)果卻和它們的類型名稱不盡相同。

    typeof {community:"sf"} // "Object"
    typeof undefined        // "undefined"
    typeof 12               // "number"
    typeof "javascript"     // "string"
    typeof true             // "boolean"
    typeof Symbol           // "symbol"

上面的這六種類型都和我typeof出來(lái)的字符串互相對(duì)應(yīng)。

咦? null 哪去了?現(xiàn)在我門來(lái)多帶帶看案它的類型.

typeof null === "object"     //true

你可能會(huì)看到null并不是"null",這是JavaScript一個(gè)歷史悠久的bug,但是由于web系統(tǒng)對(duì)其的依賴,很難修復(fù),這個(gè)bug也許會(huì)一直存在雨javascript中。我們需要銘記在心,避免以后程序出現(xiàn)問(wèn)題。我們?cè)儆脧?fù)合條件來(lái)檢測(cè)一下null值的類型:

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

由此我們知道,null隱式強(qiáng)制類型轉(zhuǎn)換成了反值為true(說(shuō)明null的布爾值為false),并對(duì)它的類型做出全等比較,最后返回true。

typeof function(){}  // "function"

這樣看來(lái),function也是JavaScript的一個(gè)內(nèi)置類型吧?可以去查閱一下ECMAScript規(guī)范,它其實(shí)是Object類型中的子類型,也就是說(shuō)它屬于Object類型范疇之內(nèi),具體來(lái)說(shuō),函數(shù)是可調(diào)用對(duì)象,它有一個(gè)內(nèi)部屬性[[call]]使其可以被調(diào)用。
那么它有什么對(duì)象的特征呢?讓我們來(lái)在控制臺(tái)中打印出來(lái)看一下.

可以看到,函數(shù)當(dāng)中有一些可讀取屬性,就比如 .length屬性,代表的是其聲明的參數(shù)個(gè)數(shù),

var fun = function(a,b){}
fun.length //2

查看了function,讓我們?cè)賮?lái)查看一下Array類型.

typeof [1,2,3] === "object"  //true

它們都同屬于Object子類型, 數(shù)組的元素按數(shù)字順序來(lái)進(jìn)行索引(非字符串那樣通過(guò)字符串鍵值),其length屬性是其數(shù)組元素個(gè)數(shù)。

值和類型

JavaScript中的類型是相對(duì)于他的值來(lái)定義的,也就是說(shuō)衡量類型的永遠(yuǎn)都是值本身,與變量無(wú)關(guān),變量只是儲(chǔ)存值的一個(gè)容器,在這個(gè)容器中有不確定的值類型

JavaScript 不做類型強(qiáng)制,也就是說(shuō),語(yǔ)言引擎不要求變量總是與初始化值同類型的值。

   var a = 10;
   typeof a    // "number"

   a = true;
   typeof a    //"boolean"

typeof 總會(huì)返回一個(gè)字符串

  typeof typeof 10     //string  

typeof 10 返回為 "number" 之后再次使用typeof "number" 結(jié)果為 ”string“

Undeclared與Undefined

我們都知道undefined代表未被復(fù)制,它也是我們七大類型中的一種,如下:

     var a;
     typeof a      //"undefined"
     
     var b = 20;
     var c;
     
     b = c;
     typeof b      // "undefined"
     typeof c      // "undefined"

可能有些朋友對(duì)Undeclared有些陌生,讓我們來(lái)看一下它與Undefined的定義:
在作用域中未被聲明過(guò)的變量為 Undeclared。
作用域中聲明了且未被賦值的為Undefined

遺憾的是我們?cè)趈s環(huán)境下測(cè)試時(shí),兩種情況卻并沒(méi)有出現(xiàn)Undeclared,這是為什么呢?

   var a ;
       
   a;     //undefined
   b;     //ReferenceError : b is not defined

"b is not defined " 容易讓人誤解為與undefined的性質(zhì)一樣,其它們兩個(gè)是兩碼事此時(shí)瀏覽器如果報(bào)成 b is not found 或者 b is not declared會(huì)更加準(zhǔn)確。

雖然JS當(dāng)中沒(méi)有Undeclared的顯式概念,但是我們要知道它是存在的,Undefined 與 Undeclared 是完全兩種不同的場(chǎng)景;

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

對(duì)于Undeclared照樣返回了undefined。這里b雖然是一個(gè)Undeclared變量,但typeof b 它并沒(méi)有報(bào)錯(cuò),這是因?yàn)閠ypeof有一套安全防范機(jī)制。

typeof Undeclared

該安全機(jī)制在瀏覽器運(yùn)行時(shí)的JavaScript代碼來(lái)說(shuō)是很有幫助的,因?yàn)槎鄠€(gè)腳本文件會(huì)在共享的全局命名空間中加載變量。

舉個(gè)例子 ,如果我們?cè)诓紶柇h(huán)境下為一個(gè)值做非空判斷。

   if(DETELE){}  // ReferenceError: detele is not defined

拋出了錯(cuò)誤,上面已經(jīng)解釋過(guò),此處不再?gòu)?qiáng)調(diào)它的準(zhǔn)確意義。為了避免程序出現(xiàn)這種促五,我們可以使用 typeof 來(lái)對(duì)它進(jìn)行改造。

  if(typeof DETELE === "undefined"){  }

同樣屬于非空條件判斷,后者的優(yōu)勢(shì),我想大家已經(jīng)看到了,不論何時(shí)它都不會(huì)報(bào)錯(cuò),只是淡出的返回布爾值

可以看到 typeof 的安全防范機(jī)制為我們提供了非常便捷的方式,還有一種方式如下:

  if(window.DETELE){}

如果這個(gè)變量存在于全局中,我們可以利用它,全局變量中默認(rèn)為全局屬性的特性,來(lái)通過(guò)查找對(duì)象屬性的方式去查看它,當(dāng)然這只是在全局條件下,當(dāng)非全局條件下,我們可以繼續(xù)使用typeof去判斷。

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/82079.html

相關(guān)文章

  • WebSocket系列之JavaScript中數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)

    摘要:以和為例,說(shuō)明中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)。對(duì)象用來(lái)表示通用的固定長(zhǎng)度的原始二進(jìn)制數(shù)據(jù)緩沖區(qū)。中的數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為二進(jìn)制數(shù)據(jù)對(duì)和有了一個(gè)大概的了解,下面讓我們來(lái)看下它是如何進(jìn)行二進(jìn)制數(shù)據(jù)操作的。 概述 本文主要通過(guò)對(duì)JavaScript中數(shù)字?jǐn)?shù)據(jù)與二進(jìn)制數(shù)據(jù)之間的轉(zhuǎn)換,讓讀者能夠了解在JavaScript中如何對(duì)數(shù)字類型(包括但不限于Number類型)進(jìn)行處理。 二進(jìn)制數(shù)據(jù)在日常...

    MASAILA 評(píng)論0 收藏0
  • JS程序

    摘要:設(shè)計(jì)模式是以面向?qū)ο缶幊虨榛A(chǔ)的,的面向?qū)ο缶幊毯蛡鹘y(tǒng)的的面向?qū)ο缶幊逃行┎顒e,這讓我一開(kāi)始接觸的時(shí)候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續(xù)了解設(shè)計(jì)模式必須要先搞懂面向?qū)ο缶幊蹋駝t只會(huì)讓你自己更痛苦。 JavaScript 中的構(gòu)造函數(shù) 學(xué)習(xí)總結(jié)。知識(shí)只有分享才有存在的意義。 是時(shí)候替換你的 for 循環(huán)大法了~ 《小分享》JavaScript中數(shù)組的那些迭代方法~ ...

    melody_lql 評(píng)論0 收藏0
  • WebSocket系列之字符串如何與二進(jìn)制數(shù)據(jù)間進(jìn)行互相轉(zhuǎn)換

    摘要:總結(jié)通過(guò)使用和,我們能夠在數(shù)據(jù)和二進(jìn)制數(shù)據(jù)中進(jìn)行互相轉(zhuǎn)換。下一篇系列相關(guān)的博客,將會(huì)介紹如何通過(guò)來(lái)向后端傳遞二進(jìn)制數(shù)據(jù),以及如何處理通過(guò)收到的二進(jìn)制數(shù)據(jù)。 概述 上一篇博客我們說(shuō)到了如何進(jìn)行數(shù)字類型(如Short、Int、Long類型)如何在JavaScript中進(jìn)行二進(jìn)制轉(zhuǎn)換,如果感興趣的可以可以閱讀本系列第二篇博客——WebSocket系列之JavaScript中數(shù)字?jǐn)?shù)據(jù)如何轉(zhuǎn)換為...

    stackfing 評(píng)論0 收藏0
  • 前端學(xué)習(xí)之路-CSS介紹,Html介紹JavaScript介紹

    CSS介紹 學(xué)前端必備掌握CSS樣式,css為層疊樣式表,用來(lái)定義頁(yè)面的顯示效果,加強(qiáng)用戶的體驗(yàn)樂(lè)趣,那么如何用css到html中呢? style屬性方式 利用標(biāo)簽中的style屬性來(lái)改變顯示樣式 p標(biāo)簽 在head中加入style標(biāo)簽 p { color: #FFF000;} 鏈接方式 總結(jié)CSS 選擇器名稱 { 屬性名:屬性值; ……. } 屬性與屬性之間用 分號(hào)...

    mtunique 評(píng)論0 收藏0
  • Asm.js的簡(jiǎn)單介紹

    摘要:的代碼采用另外一套編譯器,將代碼預(yù)先編譯成機(jī)器指令,在編譯過(guò)程或運(yùn)行過(guò)程中,一旦發(fā)現(xiàn)語(yǔ)法錯(cuò)誤或違反類型標(biāo)記的情況出現(xiàn),便重新將代碼交予引擎解析執(zhí)行。 Asm.js簡(jiǎn)介 早前流行的JavaScript將會(huì)統(tǒng)治世界這個(gè)梗,很好的說(shuō)明了JavaScript的將來(lái),能用JavaScript書(shū)寫(xiě)的都會(huì)用JavaScript來(lái)進(jìn)行書(shū)寫(xiě),不過(guò)JavaScript的弱類型是其被黑性能的很大不一部分,而...

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

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

0條評(píng)論

K_B_Z

|高級(jí)講師

TA的文章

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