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

資訊專欄INFORMATION COLUMN

JavaScript類型介紹

K_B_Z / 2482人閱讀

摘要:我們再用復合條件來檢測一下值的類型由此我們知道,隱式強制類型轉換成了反值為說明的布爾值為,并對它的類型做出全等比較,最后返回。

我的第一篇文章

從開始學前端直至現在已有一年的時間了,期間遇見了很多事情,也經歷了各式各樣的技術問題,為了讓自己擺脫這些這些問題,最后養成了看書的習慣。因為每次看完總覺得自己內功又增了,哪怕只是一點。可惜的是每次看完都會忘掉一些,尤其是沒有自己的實踐和知識點太多時總會遺忘一些,但我不希望這種事情發生,

可能只是因為這一點,以后就會找幾天的bug,這是每個程序員都不敢預想的場景。最后我決定把我每天對知識的累積,用我理解的角度去記錄下來。筆記和文章唯一的不同前者是私有,后者是公開的,希望通過我對它理解可以幫助他人,也請大家能指出文章中的問題,感激不盡。

類型

ECMAScript語言中所有的值都對應一個類型。語言類型包括:Undefined,Null,Boolean,String,Number,Object。對于語言引擎和開發人員來說,類型是值的內部特征,它定義了值的行為,是所有編程語言的共有的概念,并使其區別于其他值。

拋開學術界對類型定義的分歧,為什么說JavaScript是否有類型也很重要呢?讓我們來詳細介紹一下,關于JavaScript類型這部分的知識。

內置類型

首先JavaScript有七種內置類型:

空值(Null)

未賦值(Undefined)

字符串(String)

數字(Number)

對象(Object)

布爾值(Boolean)

符號(Symbol ES6中新增)

注: 除對象以外其他統稱為基本類型.

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

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

上面的這六種類型都和我typeof出來的字符串互相對應。

咦? null 哪去了?現在我門來多帶帶看案它的類型.

typeof null === "object"     //true

你可能會看到null并不是"null",這是JavaScript一個歷史悠久的bug,但是由于web系統對其的依賴,很難修復,這個bug也許會一直存在雨javascript中。我們需要銘記在心,避免以后程序出現問題。我們再用復合條件來檢測一下null值的類型:

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

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

typeof function(){}  // "function"

這樣看來,function也是JavaScript的一個內置類型吧?可以去查閱一下ECMAScript規范,它其實是Object類型中的子類型,也就是說它屬于Object類型范疇之內,具體來說,函數是可調用對象,它有一個內部屬性[[call]]使其可以被調用。
那么它有什么對象的特征呢?讓我們來在控制臺中打印出來看一下.

可以看到,函數當中有一些可讀取屬性,就比如 .length屬性,代表的是其聲明的參數個數,

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

查看了function,讓我們再來查看一下Array類型.

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

它們都同屬于Object子類型, 數組的元素按數字順序來進行索引(非字符串那樣通過字符串鍵值),其length屬性是其數組元素個數。

值和類型

JavaScript中的類型是相對于他的值來定義的,也就是說衡量類型的永遠都是值本身,與變量無關,變量只是儲存值的一個容器,在這個容器中有不確定的值類型

JavaScript 不做類型強制,也就是說,語言引擎不要求變量總是與初始化值同類型的值。

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

   a = true;
   typeof a    //"boolean"

typeof 總會返回一個字符串

  typeof typeof 10     //string  

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

Undeclared與Undefined

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

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

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

遺憾的是我們在js環境下測試時,兩種情況卻并沒有出現Undeclared,這是為什么呢?

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

"b is not defined " 容易讓人誤解為與undefined的性質一樣,其它們兩個是兩碼事此時瀏覽器如果報成 b is not found 或者 b is not declared會更加準確。

雖然JS當中沒有Undeclared的顯式概念,但是我們要知道它是存在的,Undefined 與 Undeclared 是完全兩種不同的場景;

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

對于Undeclared照樣返回了undefined。這里b雖然是一個Undeclared變量,但typeof b 它并沒有報錯,這是因為typeof有一套安全防范機制。

typeof Undeclared

該安全機制在瀏覽器運行時的JavaScript代碼來說是很有幫助的,因為多個腳本文件會在共享的全局命名空間中加載變量。

舉個例子 ,如果我們在布爾環境下為一個值做非空判斷。

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

拋出了錯誤,上面已經解釋過,此處不再強調它的準確意義。為了避免程序出現這種促五,我們可以使用 typeof 來對它進行改造。

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

同樣屬于非空條件判斷,后者的優勢,我想大家已經看到了,不論何時它都不會報錯,只是淡出的返回布爾值

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

  if(window.DETELE){}

如果這個變量存在于全局中,我們可以利用它,全局變量中默認為全局屬性的特性,來通過查找對象屬性的方式去查看它,當然這只是在全局條件下,當非全局條件下,我們可以繼續使用typeof去判斷。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/82079.html

相關文章

  • WebSocket系列之JavaScript中數字數據如何轉換為二進制數據

    摘要:以和為例,說明中的數字數據如何轉換為二進制數據。對象用來表示通用的固定長度的原始二進制數據緩沖區。中的數字數據如何轉換為二進制數據對和有了一個大概的了解,下面讓我們來看下它是如何進行二進制數據操作的。 概述 本文主要通過對JavaScript中數字數據與二進制數據之間的轉換,讓讀者能夠了解在JavaScript中如何對數字類型(包括但不限于Number類型)進行處理。 二進制數據在日常...

    MASAILA 評論0 收藏0
  • JS程序

    摘要:設計模式是以面向對象編程為基礎的,的面向對象編程和傳統的的面向對象編程有些差別,這讓我一開始接觸的時候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續了解設計模式必須要先搞懂面向對象編程,否則只會讓你自己更痛苦。 JavaScript 中的構造函數 學習總結。知識只有分享才有存在的意義。 是時候替換你的 for 循環大法了~ 《小分享》JavaScript中數組的那些迭代方法~ ...

    melody_lql 評論0 收藏0
  • WebSocket系列之字符串如何與二進制數據間進行互相轉換

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

    stackfing 評論0 收藏0
  • 前端學習之路-CSS介紹,Html介紹JavaScript介紹

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

    mtunique 評論0 收藏0
  • Asm.js的簡單介紹

    摘要:的代碼采用另外一套編譯器,將代碼預先編譯成機器指令,在編譯過程或運行過程中,一旦發現語法錯誤或違反類型標記的情況出現,便重新將代碼交予引擎解析執行。 Asm.js簡介 早前流行的JavaScript將會統治世界這個梗,很好的說明了JavaScript的將來,能用JavaScript書寫的都會用JavaScript來進行書寫,不過JavaScript的弱類型是其被黑性能的很大不一部分,而...

    lijy91 評論0 收藏0

發表評論

0條評論

K_B_Z

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<