引用类型和基本类型的区别---null和undefined的区别--(有案例)

一、引用类型和基本类型的区别

基本类型有:Undefined、Null、Boolean、Number、String、Symbol

引用类型有:统称为 Object 类型。

1)、内存的角度:

基本类型在内存中,占据一块空间,空间里存储的就是数据,获取数据是直接获取

引用类型在内存中,占据两块空间,第一块存储的是地址,第二块存储的是数据,获取数据是属间接取值
在这里插入图片描述

2)、赋值的角度

基本类型赋的就是值,引用类型赋的就是地址

//一、赋值的角度
    //1.基本类型
    let name = "小明"
    let str = name
    console.log("str", str);//小明
    name = "老六"
    console.log("str", str);//小明

    //2.引用类型
    let person = {
        name: "小明",
        age: 18
    }
    let newperson = person
    console.log("newperson", newperson);//{name: '小明', age: 18}
    person.age = 20
    console.log("newperson", newperson);//{name: '小明', age: 20}
3)、函数传参

基本类型传的是值,引用类型传的是地址

    //二、函数传参的角度
    //1.基本类型
    let a = 12

    let fn01 = function (num) {
        num = num + 1
        return num
    }
    console.log("fn01", fn01(a));//13
    console.log("a", a);//12

    //2.引用类型
    let b = [18, 12]

    function fn02(arr) {
        let newarr = arr
        newarr[0] = "我变了"
        return newarr
    }
    console.log("fn02", fn02(b));//['我变了', 12]
    console.log("b", b);//['我变了', 12]

二、null和undefined区别

相同点:都是基本数据类型

undefined: 定义变量后,没有赋值
1)定义了形参,没有传实参,显示 undefined
2)对象属性名不存在时,显示 undefined
3)函数没有写返回值,即没有写 return,拿到的是 undefined
4)写了 return,但没有赋值,拿到的是 undefined

 //1.定义变量后,没有赋值
    var a;
    console.log("a", a);//undefined
    //2.定义了形参,没有传实参,显示 undefined
    function fn01(a) {
        console.log(a);//undefined
    }
    fn01()
    //3.函数没有写返回值,即没有写 return,拿到的是 undefined
    function fn02(a) {
        var b = a
    }
    console.log("fn02", fn02(1));//undefined

    //4.写了 return,但没有赋值,拿到的是 undefined
    function fn03(b) {
        return b
    }
    console.log("fn03", fn03());//undefined

null: 对象没有引用的值,即就是引用类型里没有存储地址
1)作为函数的参数,表示该函数的参数不是对象
2)作为对象原型链的终点

2.转为数值:
null 转为数值是 0 ;
undefined 转为数值是 NAN(not a number)。

    //转为数值
    // null 转为数值是 0 ;
    var a = null
    var b = Number(a)
    console.log("b", b);//0

    // undefined 转为数值是 NAN(not a number)。
    var c = Number(undefined)
    console.log("c", c);//NaN

3.typeof判断类型:
null 通过 typeof 判断类型的时候结果的输出是 object ;
undefined 的类型是 undefined

    //typeof判断类型:
    console.log(typeof null);//object
    console.log(typeof undefined);//undefined
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值