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

資訊專欄INFORMATION COLUMN

二、數據類型

CarlBenjamin / 1583人閱讀

摘要:中的數據類型為什么稱為弱類型語言中變量是沒有類型的,只有值才有。有哪些數據類型在中,共有七種數據類型,其中,六種是基本原始類型,一種是對象復合引用類型。因此,我們可以寫一個函數,用來精確檢測類型。

定義 1. 什么是數據類型?

數據類型,就是將數據按照某一規則進行區別時所定義的分類標簽。比如說,同樣都是漢字組成的詞語,要分動詞、名詞、介詞等。

2. 為什么會有數據類型?它出現的意義何在?

對數據分類,主要有兩個原因:

第一,是為了限制不同種類數據的操作。比如說當你聲明一個變量是一個數字,那么,就只能對這個變量進行數字能進行的操作,這在編譯代碼及排查錯誤時尤為重要。

第二,由于所有的數據都要存儲在計算機中,不同數據的存儲位置及所需要的內存大小也不一樣,而有了數據類型,編程的時候需要用大數據的時候才需要申請大內存,就可以充分利用內存。

例如大胖子必須睡雙人床,就給他雙人床,瘦的人單人床就夠了。

JavaScript 中的數據類型 1. 為什么稱 JavaScript 為弱類型語言?

JavaScript 中變量是沒有類型的,只有值才有。變量可以隨時持有任何類型的值。

舉個例子:

// js
let a = 4;
a = "4";
a = false;

在上面的例子中可以看到:我們聲明 a 是一個數字,但是我們在之后將 a 的值又改成了字符串和布爾值(后面會講這些類型)也并沒有什么異常。我們可以看到,變量 a 的類型是隨意轉變的,這在強類型語言里是不允許的。

因此,判斷一門語言是強類型還是弱類型,就看這門語言中一個變量是否可以賦不同數據類型的值。

2. JavaScript 有哪些數據類型?

在 JavaScript 中,共有七種數據類型,其中,六種是基本/原始類型,一種是對象/復合/引用類型。

基本類型:

字符串(String):表示一個字符串,如“find”。

數字(Number):表示一個數字,如 45 。

布爾(Boolean):布爾值,包括 false 和 true 。

未定義(undefined):只有一個值,undefined , 表示未給變量賦值。

空值(null):只有一個值, null , 表示空值得關鍵字。

Symbol(es6新增):表示一個唯一且不可改變的值。

引用類型:

對象(object): 各種值組成的集合。

其中,對象類型還有一些子類型,如數組,函數,JavaScript 的內建函數等。

3. 基本數據類型和復合數據類型有什么區別?

主要有兩點:

基本類型的數據是不可再拆分的。 這也就是為什么稱他為基本類型,就像組成單詞的 26 個英文字母、組成數字的 0 -9;而復合類型的數據,是由基本類型組成。比如一個單詞,可以由數個字母組成,一個句子,可以由數字、字母及標點復合組成。

它們在計算機中的存儲方式不同。計算機存儲數據時為了內存及運行速度考慮,往往會對存儲做優化,有的會將值本身存儲在棧內存中,也有可能會在棧內存中存儲一個值的引用,而把值本身存在堆內存中。對于不同的語言,實現起來或許會有不一致,但思想都是如此。

4. JavaScript 中值類型和引用類型的存儲方式是怎樣的?

對于 js 來講,是沒有棧內存的概念的,但是 js 在編譯執行代碼時,會首先進入一個執行上下文,在執行上下文的創建階段,會開辟一片區域,用來存儲變量和它們的值,這個區域就叫做變量對象。

大概長這個樣子:

如上圖所示,對于基本類型的變量,他們的變量名和值都會存儲在這個變量對象中,而對于 d , 這個引用類型的值,則只是將這個變量的名字和地址存在變量對象中,變量的值是存儲在堆內存空間的,這個區別將會在使用時產生很大的差異,我們后面再講。

5. 如何判斷一個數據的數據類型? - typeof 方法

聲明一個變量,使用 使用 typeof 方法會返回一個唯一的數據類型字符串。但這個方法并不怎么靠譜。

類型 typeof 值
23 number "number"
"abc" string "string"
false boolean "boolean"
undefined undefined "undefined"
Symbol() symbol "symbol"
{} object "object"
null null "object"
function(){} object "funciton"

從上表中我們看到,有兩處地方和我們預期不一致。

typeof null 返回的是 "object" 而不是 "null"。這是 js 語言設計時的一個 bug, 并且在未來也不會更改。

想要爭取判斷 null 可以加一個條件:

function typeOf(a) {
    if(!a && typeof a === "object") return "null";
    return typeof a;
}
typeOf({}); // "object"
typeOf(null); // "null"

typeof function(){} === "function", 這是因為function 作為 js 的一等公民,是可以調用的對象,設計者認為有必要將它和普通對象區別開來。

- Object.prototype.toString.call() 方法

除了 typeof 方法外,調用 Object.prototype.toString.call() 方法 也可以返回一個包含數據類型的字符串,并且更為準確。

類型 Object.prototype.toString.call(值)
23 number "[object Number]"
"abc" string "[object String]"
false boolean "[object Boolean]"
undefined undefined "[object Undefined]"
Symbol() symbol "[object Symbol]"
{} object "[object Object]"
null null "[object Null]"
function(){} object "[object Function]"
[] object "[object Array]"

從上面們可以看出,這方法對于類型的檢測更加精確。

因此,我們可以寫一個函數,用來精確檢測類型。

function getClass (a) {
  const str = Object.prototype.toString.call(a)
  return /^[object (.*)]$/.exec(str)[1]
}
getClass(null) // "Null";
...

關于數據類型,就先說到這里,并沒有深入到每一種類型中去講,感覺沒有必要,關于細節有很多教程。我要做的,是讓大家從整體上來看數據類型在 JavaScript 中的表現,這將有助于大家理解后面更加復雜的知識。

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

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

相關文章

  • 進擊的 JavaScript() 之 數據結構

    摘要:的垃圾回收器,進行回收。它們的數據就存放在堆內存中,大小不一定,動態分配內存,可隨時修改。引用類型的變量存的是其在堆內存中的地址,值的讀取,就是讀取這個內存地址中儲存的內容。 這東西還是很重要的,你要是搞懂了,就會去除很多困惑,比如不知道大家在學習js 的時候,有沒有對 基礎類型 和 引用類型 感到困惑過,兩者之間 表現的不同之處。 js 不同其他編程語言,它是腳本語言。所以,它的數...

    BlackFlagBin 評論0 收藏0
  • ??爆肝十萬字《python從零到精通教程》,從零教你變大佬??(建議收藏)

    文章目錄 強烈推薦系列教程,建議學起來!! 一.pycharm下載安裝二.python下載安裝三.pycharm上配置python四.配置鏡像源讓你下載嗖嗖的快4.1pycharm內部配置 4.2手動添加鏡像源4.3永久配置鏡像源 五.插件安裝(比如漢化?)5.1自動補碼神器第一款5.2漢化pycharm5.3其它插件 六.美女背景七.自定義腳本開頭八、這個前言一定要看九、pyt...

    booster 評論0 收藏0
  • 數據類型

    摘要:定義什么是數據類型數據類型,就是將數據按照某一規則進行區別時所定義的分類標簽。中的數據類型為什么稱為弱類型語言中變量是沒有類型的,只有值才有。有哪些數據類型在中,共有七種數據類型,其中,六種是基本原始類型,一種是對象復合引用類型。 showImg(https://segmentfault.com/img/remote/1460000017215604); 定義 1. 什么是數據類型? ...

    Tecode 評論0 收藏0
  • 33 個 js 核心概念():數據類型

    摘要:舉個例子在上面的例子可以看到,我們聲明是一個數字,但是我們在之后將的值又改成了字符串和布爾值后面會講這些類型。基本類型字符串表示一個字符串,如。因此,我們可以寫一個函數,用來精確檢測類型。 showImg(https://segmentfault.com/img/remote/1460000017309509?w=850&h=572); 定義 1. 什么是數據類型? 數據類型,就是將...

    QiShare 評論0 收藏0

發表評論

0條評論

CarlBenjamin

|高級講師

TA的文章

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