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    


相关文章
|
5月前
|
存储 Java 程序员
|
5月前
|
存储
记录一次错误。(此声明没有存储类或类型说明符)
记录一次错误。(此声明没有存储类或类型说明符)
|
6月前
|
JavaScript 前端开发 编译器
TypeScript 中的基础类型:原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型
TypeScript 中的基础类型:原始类型、对象类型、数组类型、元组类型、枚举类型和联合类型
74 1
|
存储 Java
基本类型、包装类型、引用类型、String等作为实参传递后值会不会改变?
基本类型、包装类型、String类型作为参数传递之后,在方法里面修改他们的值,原值不会改变!引用类型不一定,要看是怎么修改它的。
114 0
对象的属性和值转换
对象的属性和值转换
39 0
|
存储 编译器
不同类型的变量与零究竟是如何比较(2)
不同类型的变量与零究竟是如何比较
129 0
不同类型的变量与零究竟是如何比较(2)
|
C语言 C++
不同类型的变量与零究竟是如何比较(1)
不同类型的变量与零究竟是如何比较
112 0
不同类型的变量与零究竟是如何比较(1)
1、原始类型与引用类型(区别)
1、原始类型与引用类型(区别)
142 0
|
存储 JavaScript 前端开发
ECMAScript变量 - 原始值和引用值
ECMAScript变量 - 原始值和引用值