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

資訊專欄INFORMATION COLUMN

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

崔曉明 / 2465人閱讀

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

走在前端的大道上

本篇將自己讀過的相關(guān) javascript 數(shù)據(jù)類型 文章中,對自己有啟發(fā)的章節(jié)片段總結(jié)在這(會對原文進(jìn)行刪改),會不斷豐富提煉總結(jié)更新。

數(shù)據(jù)類型

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

undefined

null

string

boolean

number

symbol (ES6新增)

object

undefined類型

原始值類型. 表示某個變量已經(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; /* 顯示將某個變量指向undefined, 消除引用標(biāo)記 */
null 類型

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

如果要驗證一個變量是否為null, 可以有以下幾種方式

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

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

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

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

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

boolean 類型

原始值類型, 只有true, false 兩個原始值.

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

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

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

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

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

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

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

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

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 時,返回的是function

function Foo() {
}

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

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

包裝類型

為了方便boolean, number, string 基本類型的處理及調(diào)用, 當(dāng)我們在執(zhí)行toString(), valueOf(), +操作符 以及函數(shù)方法的時候, 會隱世轉(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

參考文章:
1.【JS基礎(chǔ)】初談JS現(xiàn)有的數(shù)據(jù)類型

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

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

相關(guān)文章

  • javascript知識點(diǎn)

    摘要:模塊化是隨著前端技術(shù)的發(fā)展,前端代碼爆炸式增長后,工程化所采取的必然措施。目前模塊化的思想分為和。特別指出,事件不等同于異步,回調(diào)也不等同于異步。將會討論安全的類型檢測惰性載入函數(shù)凍結(jié)對象定時器等話題。 Vue.js 前后端同構(gòu)方案之準(zhǔn)備篇——代碼優(yōu)化 目前 Vue.js 的火爆不亞于當(dāng)初的 React,本人對寫代碼有潔癖,代碼也是藝術(shù)。此篇是準(zhǔn)備篇,工欲善其事,必先利其器。我們先在代...

    Karrdy 評論0 收藏0
  • 手摸手,帶你用vue擼后臺 系列三(實(shí)戰(zhàn)篇)

    摘要:社區(qū)的認(rèn)可目前已經(jīng)是相關(guān)最多的開源項目了,體現(xiàn)出了社區(qū)對其的認(rèn)可。監(jiān)聽事件手動維護(hù)列表這樣我們就簡單的完成了拖拽排序。 完整項目地址:vue-element-admin 系類文章一:手摸手,帶你用vue擼后臺 系列一(基礎(chǔ)篇)系類文章二:手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇)系類文章三:手摸手,帶你用vue擼后臺 系列三(實(shí)戰(zhàn)篇)系類文章四:手摸手,帶你用vue擼后臺 系列...

    Channe 評論0 收藏0
  • 手摸手,帶你用vue擼后臺 系列三(實(shí)戰(zhàn)篇)

    摘要:社區(qū)的認(rèn)可目前已經(jīng)是相關(guān)最多的開源項目了,體現(xiàn)出了社區(qū)對其的認(rèn)可。監(jiān)聽事件手動維護(hù)列表這樣我們就簡單的完成了拖拽排序。 完整項目地址:vue-element-admin 系類文章一:手摸手,帶你用vue擼后臺 系列一(基礎(chǔ)篇)系類文章二:手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇)系類文章三:手摸手,帶你用vue擼后臺 系列三(實(shí)戰(zhàn)篇)系類文章四:手摸手,帶你用vue擼后臺 系列...

    zgbgx 評論0 收藏0
  • 手摸手,帶你封裝個vue component

    摘要:靈活性和針對性。所以我覺得大部分組件還是自己封裝來的更為方便和靈活一些。動手開干接下來我們一起手摸手教改造包裝一個插件,只要幾分鐘就可以封裝一個專屬于你的。 項目地址:vue-countTo配套完整后臺demo地址:vue-element-admin系類文章一:手摸手,帶你用vue擼后臺 系列一(基礎(chǔ)篇)系類文章二:手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇)系類文章三:手摸手,帶...

    pkhope 評論0 收藏0

發(fā)表評論

0條評論

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