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

資訊專欄INFORMATION COLUMN

【JS基礎(chǔ)】初談JS現(xiàn)有的數(shù)據(jù)類型

xeblog / 1791人閱讀

摘要:相當(dāng)于相當(dāng)于相當(dāng)于基礎(chǔ)類型不屬于包裝的對象類型小結(jié)數(shù)據(jù)類型是每一個(gè)語言的基礎(chǔ)由于屬于弱類型腳本語言因此數(shù)據(jù)只有在賦值后才能直到變量的數(shù)據(jù)類型下一次我們具體介紹對象的概念

前言
在《你所不知道的javascript上篇》書籍 以及《javascript權(quán)威指南》等書籍里面, 均有介紹js的數(shù)據(jù)類型,對象,原型,繼承。結(jié)合工作經(jīng)驗(yàn), 以及借用一些開源庫和框架的源碼, 進(jìn)行一次梳理。 首先介紹數(shù)據(jù)類型 ~~
數(shù)據(jù)類型

js 目前有以下幾大數(shù)據(jù)類型

undefined

null

string

boolean

number

symbol (ES6新增)

object

undefined類型

原始值類型. 表示某個(gè)變量已經(jīng)聲明, 但是未分配內(nèi)存空間給予該變量.

var foo; 
console.log(foo); /* 申明變量, 卻沒有賦值 */
function bar (a) {
  console.log(a); /* 函數(shù)形參聲明, 卻沒有對應(yīng)實(shí)參賦值 */
}
bar();
function foo2 () {}
var bar2 = foo2(); /* 函數(shù)無return 或者, return 不帶任何返回值 */
var o = {foo: "foo"}
console.log(o.bar); /* 在對象中尋找不存在的屬性 */
var foo = "foo";
foo = undefined; /* 顯示將某個(gè)變量指向undefined, 消除引用標(biāo)記 */
null 類型

原始值類型. 聲明變量此時(shí)為一個(gè)空的原始值. 由于歷史原因, 使用typeof null 返回 object表示為一個(gè)對象.

如果要驗(yàn)證一個(gè)變量是否為null, 可以有以下幾種方式

function is_null (o) {
  return o === null;
}

function is_null (o) {
  return Object.prototype.toString.call(o) === "[object Null]";
}
string類型

原始值類型. string屬于不可變值類型, 當(dāng)一個(gè)字符串進(jìn)行相加后, 返回一個(gè)新的字符串引用。

var str = "hello world";
str = str + " liyanlong";
// 1. 棧內(nèi)存 創(chuàng)建一個(gè)str變量
// 2. "hello wolrd" 內(nèi)容存儲(chǔ)在堆中, 并將引用賦給 str變量
// 3. 獲取str的變量引用, 與新字符串 ` liyanlong` 進(jìn)行連接操作. 產(chǎn)生新的引用地址并傳給str

簡單理解: string 類型的內(nèi)容與 object的 內(nèi)容都存儲(chǔ)在堆中。不同的一點(diǎn)是, 無法對string的堆進(jìn)行修改, 任何連接,分割字符串的操作都會(huì)產(chǎn)生一個(gè)新的堆引用。

boolean 類型

原始值類型, 只有true, false 兩個(gè)原始值.

typeof true // boolean
typeof false // boolean
number 類型

原始值類型. 存儲(chǔ)一切數(shù)值類型, 包括正負(fù)數(shù), 整數(shù), 小數(shù), 科學(xué)計(jì)數(shù).

typeof NaN // number
typeof Infinity // number
typeof 0 // number
typeof 1e2 // number
typeof -0.5 // number

檢查一個(gè)變量是否可成為無法成為合法的 number 類型

window.isNaN("12") // false
window.isNaN("foo") // true

檢查number是否為有限的number(非無窮)值

window.isFinite("123") // true
window.isFinite(Infinity) // false
symbol類型

原始值類型. 屬于ES6新增的一種數(shù)據(jù)類型. ES6允許屬性的keysymbol類型. 以此可以提供一個(gè)私有的屬性

let obj = (function () {
    let key = Symbol("你好");
    let obj = {
    };
    obj[key] = "私有變量";
    return {
        get foo () {
            return this[key];
        }
    };
})();
obj.foo = "hello world";
console.log(Object.getOwnPropertyNames(obj)); // ["foo"]
console.log(Object.getOwnPropertySymbols(obj)); // [Symbol(你好)]

let anotherKey = Symbol("你好");
console.log(obj[anotherKey]) // undefined
typeof anotherKey // "symbol"
object類型

引用類型. js中常見的引用對象 有Array, Object, Date.

var arr = [];
var o = {};
var date = new Date()
typeof o // object
typeof arr // object
typeof date // object

函數(shù)也屬于對象類型, 它是一種可調(diào)用的對象, 并且能創(chuàng)建調(diào)用棧執(zhí)行內(nèi)部代碼. 只是函數(shù)在執(zhí)行typeof 時(shí),返回的是function

function Foo() {
}

typeof Foo // function 
Foo instanceof Object // true
值類型與引用類型

值類型屬于不可變類型, 由于具有固定長度大小, 因此可以存放在棧內(nèi)存中,而引用類型屬于可變類型, 一個(gè)對象可以賦予多個(gè)屬性及值,屬性值又可以為一個(gè)新的引用對象。因此將引用類型存放在堆中

包裝類型

為了方便boolean, number, string 基本類型的處理及調(diào)用, 當(dāng)我們在執(zhí)行toString(), valueOf(), +操作符 以及函數(shù)方法的時(shí)候, 會(huì)隱世轉(zhuǎn)換為Boolean,Number, String對象類型. 執(zhí)行后返回的又是基本類型。

var bool = true
var number = 1
var string = "hello world"

console.log(bool + number) // 2
// 相當(dāng)于
console.log(Boolean(bool).valueOf() + number) // 2

console.log(bool + string) // true hello world
// 相當(dāng)于
console.log(Boolean(bool).toString() + string) // true hello world

string.charAt(0) // h
// 相當(dāng)于
console.log(String(string).charAt(0)) // h

// 基礎(chǔ)類型不屬于包裝的對象類型
bool instanceof Boolean // false
number instanceof Number // false
string instanceof String // false
小結(jié)

數(shù)據(jù)類型是每一個(gè)語言的基礎(chǔ). 由于js屬于弱類型腳本語言, 因此數(shù)據(jù)只有在賦值后才能直到變量的數(shù)據(jù)類型. 下一次我們具體介紹js對象的概念.

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

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/90735.html

相關(guān)文章

  • 一篇文章帶你學(xué)習(xí)js數(shù)據(jù)類型

    摘要:走在前端的大道上本篇將自己讀過的相關(guān)數(shù)據(jù)類型文章中,對自己有啟發(fā)的章節(jié)片段總結(jié)在這會(huì)對原文進(jìn)行刪改會(huì)不斷豐富提煉總結(jié)更新。相當(dāng)于相當(dāng)于相當(dāng)于基礎(chǔ)類型不屬于包裝的對象類型參考文章基礎(chǔ)初談現(xiàn)有的數(shù)據(jù)類型 走在前端的大道上 本篇將自己讀過的相關(guān) javascript 數(shù)據(jù)類型 文章中,對自己有啟發(fā)的章節(jié)片段總結(jié)在這(會(huì)對原文進(jìn)行刪改),會(huì)不斷豐富提煉總結(jié)更新。 數(shù)據(jù)類型 js 目前有以下幾大...

    崔曉明 評論0 收藏0
  • Flow - JS靜態(tài)類型檢查工具

    摘要:介紹是個(gè)的靜態(tài)類型檢查工具,由出品的開源碼項(xiàng)目,問世只有一年多,是個(gè)相當(dāng)年輕的項(xiàng)目。現(xiàn)在,提供了另一個(gè)新的選項(xiàng),它是一種強(qiáng)靜態(tài)類型的輔助檢查工具。 showImg(https://segmentfault.com/img/bVH6mL?w=1200&h=675); 本章的目標(biāo)是提供一些Flow工具的介紹與使用建議。Flow本質(zhì)上也只是個(gè)檢查工具,它并不會(huì)自動(dòng)修正代碼中的錯(cuò)誤,也不會(huì)強(qiáng)制...

    seanHai 評論0 收藏0
  • React Native 在 Airbnb(譯文)

    摘要:聲明有助于保持我們的同步與底層狀態(tài)的聲明性質(zhì)。值得注意的是,這些挑戰(zhàn)并非特定于。這導(dǎo)致或上出現(xiàn)不一致或意外錯(cuò)誤。崩潰監(jiān)控我們使用在和上進(jìn)行崩潰報(bào)告。橋接有一個(gè)橋接,用于在本機(jī)和之間進(jìn)行通信。 showImg(https://segmentfault.com/img/bVbd0FA?w=740&h=433);在Android,iOS,Web和跨平臺(tái)框架的橫向?qū)Ρ戎校琑eact Nativ...

    nihao 評論0 收藏0
  • React Native 在 Airbnb(譯文)

    摘要:聲明有助于保持我們的同步與底層狀態(tài)的聲明性質(zhì)。值得注意的是,這些挑戰(zhàn)并非特定于。這導(dǎo)致或上出現(xiàn)不一致或意外錯(cuò)誤。崩潰監(jiān)控我們使用在和上進(jìn)行崩潰報(bào)告。橋接有一個(gè)橋接,用于在本機(jī)和之間進(jìn)行通信。 showImg(https://segmentfault.com/img/bVbd0FA?w=740&h=433);在Android,iOS,Web和跨平臺(tái)框架的橫向?qū)Ρ戎校琑eact Nativ...

    chenatu 評論0 收藏0

發(fā)表評論

0條評論

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