日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

        歡迎訪問 生活随笔!

        生活随笔

        當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

        综合教程

        javascript七种数据类型详解 深入了解基本类型和引用类型的值

        發(fā)布時(shí)間:2023/11/21 综合教程 41 生活家
        生活随笔 收集整理的這篇文章主要介紹了 javascript七种数据类型详解 深入了解基本类型和引用类型的值 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

        本文轉(zhuǎn)自:原文鏈接????????????作者:percy507

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

        ES6 引入了一種新的原始數(shù)據(jù)類型 Symbol,表示獨(dú)一無(wú)二的值。它是 JavaScript 語(yǔ)言的第七種數(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)
          與其他編程語(yǔ)言不同,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的三種含義

        總結(jié)

        以上是生活随笔為你收集整理的javascript七种数据类型详解 深入了解基本类型和引用类型的值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

        如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。