19、原始类型与引用类型

简介: 19、原始类型与引用类型

1、六种数据类型


六种数据类型
数值 Number
字符串 String
布尔 Boolean
null
未定义 Undefined
对象(引用) Object


2、引用类型


Object类型
数组 Array
日期 Date
数学 Math
函数 Fnction
正则 RegExp


3、原始类型与引用类型的区别


原始类型与引用类型 区别
赋值 原始类型赋值,引用类型引用
比较 原始类型比较数值,引用类型比较引用是否指向同一个对象
传参 原始类型传参(函数里面的值不会影响外面的值),引用类型传参(函数里面的值影响外面的值)


  // 1、原始类型(栈内存)
    var str1 = 'hello';
    var str2 = 'world';
    str1 = 'jasmine';
    console.log(str1);    // 输出结果:jasmine
    console.log(str2);    // 输出结果:world
    // 2、引用类型(堆内存)
    var obj1 = { name: 'jasmine' };
    var obj2 = obj1;
    obj2.name = 'jasmine_qiqi';
    console.log(obj1.name);   // 输出结果:jasmine_qiqi
    console.log(obj2.name);   // 输出结果:jasmine_qiqi
    // 3、比较区别
    var str1 = 'hello';
    var str2 = 'hello';
    console.log(str1 === str2);   // 输出结果:true
    var obj1 = { name: 'jasmine' };
    var obj2 = { name: 'jasmine' };
    console.log(obj1 === obj2);   // 输出结果:false
    // 4、原始类型传参区别(函数里面的值不会影响外面的值)
    function fn(name) {
      name = 'qiqi';
      console.log(name);
    }
    var name = 'jasmine';
    fn(name);       // 输出结果:qiqi
    console.log(name);    // 输出结果:jasmine
    // 5、引用类型传参区别(函数里面的值影响外面的值)
    function fun(obj) {
      obj.name = 'qiqi';
      console.log(obj.name);
    }
    var obj = { name: 'jasmine' };
    fun(obj);         // 输出结果:qiqi
    console.log(obj.name);    // 输出结果:qiqi

4、类型检测(typeof、instanceof

    // 1、类型检测(typeof)
    var num = 100;        // 输出结果:number
    var name = 'jasmine';   // 输出结果:string
    var un;           // 输出结果:undefined
    var bool = true;      // 输出结果:boolean
    var aaa = null;       // 输出结果:object(bug)
    var arr = [1, 2, 3];    // 输出结果:object
    var reg = /123/;      // 输出结果:object
    let data = new Date();    // 输出结果:object
    // 2、类型检测(instanceof)
    console.log(arr instanceof Array);    // 输出结果:true
    console.log(reg instanceof RegExp);   // 输出结果:true
    console.log(data instanceof Date);    // 输出结果:true
    console.log(data instanceof Object);  // 输出结果:true    

5、类型检测(typeof、instanceof)

    // 1、类型检测(typeof)
    var num = 100;        // 输出结果:number
    var name = 'jasmine';   // 输出结果:string
    var un;           // 输出结果:undefined
    var bool = true;      // 输出结果:boolean
    var aaa = null;       // 输出结果:object(bug)
    var arr = [1, 2, 3];    // 输出结果:object
    var reg = /123/;      // 输出结果:object
    let data = new Date();    // 输出结果:object
    // 2、类型检测(instanceof)
    console.log(arr instanceof Array);    // 输出结果:true
    console.log(reg instanceof RegExp);   // 输出结果:true
    console.log(data instanceof Date);    // 输出结果:true
    console.log(data instanceof Object);  // 输出结果:true    


相关文章
|
8月前
|
存储 Java 程序员
|
8月前
|
存储
记录一次错误。(此声明没有存储类或类型说明符)
记录一次错误。(此声明没有存储类或类型说明符)
|
9月前
|
JavaScript 前端开发 程序员
强制类型转换和隐式类型传换是什么?他们的区别又是什么?
强制类型转换和隐式类型传换是什么?他们的区别又是什么?
|
9月前
|
存储 安全 C语言
深入解析void指针类型
深入解析void指针类型
143 0
|
9月前
|
JavaScript 前端开发 编译器
TypeScript 中的基础类型:原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型
TypeScript 中的基础类型:原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型
91 1
对象的属性和值转换
对象的属性和值转换
52 0
|
JavaScript 前端开发
|
存储 编译器
不同类型的变量与零究竟是如何比较(2)
不同类型的变量与零究竟是如何比较
148 0
不同类型的变量与零究竟是如何比较(2)
|
C语言 C++
不同类型的变量与零究竟是如何比较(1)
不同类型的变量与零究竟是如何比较
125 0
不同类型的变量与零究竟是如何比较(1)