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

資訊專欄INFORMATION COLUMN

JavaScript 深入了解基本類型和引用類型的值

Mr_houzi / 1484人閱讀

摘要:原文鏈接一個(gè)變量可以存放兩種類型的值,基本類型的值和引用類型的值。引入了一種新的原始數(shù)據(jù)類型,表示獨(dú)一無二的值。

原文鏈接

一個(gè)變量可以存放兩種類型的值,基本類型的值(primitive values)和引用類型的值(reference values)。

ES6 引入了一種新的原始數(shù)據(jù)類型 Symbol,表示獨(dú)一無二的值。它是 JavaScript 語言的第七種數(shù)據(jù)類型,前六種是:Undefined、Null、布爾值(Boolean)、字符串(String)、數(shù)值(Number)、對(duì)象(Object)。

基本類型

JavaScript 中共有 6 種基本數(shù)據(jù)類型:UndefinedNullBooleanNumberStringSymbol (new in ES 6)

約定:基本數(shù)據(jù)類型原始數(shù)據(jù)類型等意。

基本數(shù)據(jù)類型的值是按值訪問的。

基本類型的值是不可變的

var str = "123hello321";
str.toUpperCase();     // 123HELLO321
console.log(str);      // 123hello321

基本類型的比較是它們的值的比較

var a = 1;
var b = true;
console.log(a == b);    // true
console.log(a === b);   // false

上面 a 和 b 的數(shù)據(jù)類型不同,但是也可以進(jìn)行值的比較,這是因?yàn)樵诒容^之前,自動(dòng)進(jìn)行了數(shù)據(jù)類型的 隱式轉(zhuǎn)換

== : 只進(jìn)行值的比較

=== : 不僅進(jìn)行值得比較,還要進(jìn)行數(shù)據(jù)類型的比較

基本類型的變量是存放在棧內(nèi)存(Stack)里的

var a,b;
a = "zyj";
b = a;
console.log(a);   // zyj
console.log(b);   // zyj
a = "呵呵";       // 改變 a 的值,并不影響 b 的值
console.log(a);   // 呵呵
console.log(b);   // zyj

圖解如下:棧內(nèi)存中包括了變量的標(biāo)識(shí)符和變量的值

引用類型

除過上面的 6 種基本數(shù)據(jù)類型外,剩下的就是引用類型了,統(tǒng)稱為 Object 類型。細(xì)分的話,有:Object 類型Array 類型Date 類型RegExp 類型Function 類型 等。

引用類型的值是按引用訪問的。

引用類型的值是可變的

var obj = {name:"zyj"};   // 創(chuàng)建一個(gè)對(duì)象
obj.name = "percy";       // 改變 name 屬性的值
obj.age = 21;             // 添加 age 屬性
obj.giveMeAll = function(){
  return this.name + " : " + this.age;
};                        // 添加 giveMeAll 方法
obj.giveMeAll();

引用類型的比較是引用的比較

var obj1 = {};    // 新建一個(gè)空對(duì)象 obj1
var obj2 = {};    // 新建一個(gè)空對(duì)象 obj2
console.log(obj1 == obj2);    // false
console.log(obj1 === obj2);   // false

因?yàn)?obj1 和 obj2 分別引用的是存放在堆內(nèi)存中的2個(gè)不同的對(duì)象,故變量 obj1 和 obj2 的值(引用地址)也是不一樣的!

引用類型的值是保存在堆內(nèi)存(Heap)中的對(duì)象(Object)
與其他編程語言不同,JavaScript 不能直接操作對(duì)象的內(nèi)存空間(堆內(nèi)存)。

var a = {name:"percy"};
var b;
b = a;
a.name = "zyj";
console.log(b.name);    // zyj
b.age = 22;
console.log(a.age);     // 22
var c = {
  name: "zyj",
  age: 22
};

圖解如下:

棧內(nèi)存中保存了變量標(biāo)識(shí)符和指向堆內(nèi)存中該對(duì)象的指針

堆內(nèi)存中保存了對(duì)象的內(nèi)容

檢測(cè)類型

typeof:經(jīng)常用來檢測(cè)一個(gè)變量是不是最基本的數(shù)據(jù)類型

var a;
typeof a;    // undefined

a = null;
typeof a;    // object

a = true;
typeof a;    // boolean

a = 666;
typeof a;    // number 

a = "hello";
typeof a;    // string

a = Symbol();
typeof a;    // symbol

a = function(){}
typeof a;    // function

a = [];
typeof a;    // object
a = {};
typeof a;    // object
a = /aaa/g;
typeof a;    // object   

instanceof:用來判斷某個(gè)構(gòu)造函數(shù)的 prototype 屬性所指向的對(duì)象是否存在于另外一個(gè)要檢測(cè)對(duì)象的原型鏈上

簡(jiǎn)單說就是判斷一個(gè)引用類型的變量具體是不是某種類型的對(duì)象

({}) instanceof Object              // true
([]) instanceof Array               // true
(/aa/g) instanceof RegExp           // true
(function(){}) instanceof Function  // true

更詳細(xì)的類型檢測(cè)請(qǐng)看參考資料!

有錯(cuò)誤的地方,歡迎大家指出來!

參考資料

【文章】[ JS 進(jìn)階 ] 基本類型 引用類型 簡(jiǎn)單賦值 對(duì)象引用(推薦)

【Stack Overflow】Javascript by reference vs. by value

【文章】[[JS] 讓人犯暈的JavaScript變量賦值](http://hellobug.github.io/blo...

【文章】如何檢查JavaScript變量類型?(推薦)

【文章】Stack的三種含義

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

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

相關(guān)文章

  • 【進(jìn)階1-3期】JavaScript深入之內(nèi)存空間詳細(xì)圖解

    摘要:進(jìn)階期理解中的執(zhí)行上下文和執(zhí)行棧進(jìn)階期深入之執(zhí)行上下文棧和變量對(duì)象但是今天補(bǔ)充一個(gè)知識(shí)點(diǎn)某些情況下,調(diào)用堆棧中函數(shù)調(diào)用的數(shù)量超出了調(diào)用堆棧的實(shí)際大小,瀏覽器會(huì)拋出一個(gè)錯(cuò)誤終止運(yùn)行。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進(jìn)階的第一期,本周的主題是調(diào)用堆棧,今天是第3天。 本計(jì)劃一共28期,每期重點(diǎn)攻...

    coordinate35 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)類型----原始類型引用類型(object)詳談

    摘要:做個(gè)小小的延伸在這個(gè)栗子中,兩個(gè)對(duì)象都有一條相同的值,但這兩個(gè)對(duì)象卻不相等,為什么呢因?yàn)閮蓚€(gè)對(duì)象分別引用的是存放在堆內(nèi)存中的個(gè)不同的對(duì)象,故變量和的值引用地址也是不一樣的。 JavaScript中,有七種內(nèi)置類型:6種原始類型和引用類型,他們分別是: 6種原始類型(基本類型): 空值(null) 未定義(undefined) 布爾值(boolean) 數(shù)字(number) 字符串(s...

    tomlingtm 評(píng)論0 收藏0
  • 深入理解 JavaScript中的變量、值、傳參

    摘要:所以說在中,也并不是一切都是對(duì)象原始類型值不可變?cè)碱愋偷淖兞康闹凳遣豢勺兊模荒芙o變量賦予新的值。可以理解基本類型的變量的值,就是字面上寫的數(shù)值。有四個(gè)變量圖調(diào)用是傳參,內(nèi)層的會(huì)屏蔽外層的。圖內(nèi)層的的值被改變成的值被改變?yōu)椤? showImg(https://segmentfault.com/img/bVbldfK); 1. demo 如果你對(duì)下面的代碼沒有任何疑問就能自信的回答出輸出...

    endiat 評(píng)論0 收藏0
  • JavaScript的數(shù)據(jù)類型(四)

    摘要:目錄基本類型和引用類型檢測(cè)數(shù)據(jù)類型的方法數(shù)據(jù)類型的轉(zhuǎn)換通用庫的初步創(chuàng)建與對(duì)象的深淺拷貝小結(jié)從前面三篇文章,我們已經(jīng)大致了解的基本語法中的數(shù)據(jù)類型數(shù)值型字符串布爾型對(duì)象數(shù)組函數(shù)和這篇文章將深入探討這幾種數(shù)據(jù)類型在內(nèi)存中的存儲(chǔ)方式讀取方式和拷貝 目錄 1. 基本類型和引用類型 2. 檢測(cè)數(shù)據(jù)類型的方法 3. 數(shù)據(jù)類型的轉(zhuǎn)換 4. 通用庫的初步創(chuàng)建與對(duì)象的深淺拷貝 5. 小結(jié) 從前面三篇文...

    didikee 評(píng)論0 收藏0
  • 【進(jìn)階1-5期】JavaScript深入之4類常見內(nèi)存泄漏及如何避免

    摘要:本期推薦文章類內(nèi)存泄漏及如何避免,由于微信不能訪問外鏈,點(diǎn)擊閱讀原文就可以啦。四種常見的內(nèi)存泄漏劃重點(diǎn)這是個(gè)考點(diǎn)意外的全局變量未定義的變量會(huì)在全局對(duì)象創(chuàng)建一個(gè)新變量,如下。因?yàn)槔习姹镜氖菬o法檢測(cè)節(jié)點(diǎn)與代碼之間的循環(huán)引用,會(huì)導(dǎo)致內(nèi)存泄漏。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進(jìn)階的第一期,本周的主題...

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

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

0條評(píng)論

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