js的值类型

js的值类型

1.原始值

原始值类型分为五类:number,boolean,,string,undefined,null,

var a=123;     var=123.2  //都是定义number类型该类型可以定义为小数

var a="abc";   var='abc';   //都是定义string类型,定义string类可用“”,也可用‘’;但var c='fqaf"错误,不可以这样

var a=true;    var b=false  //定义boolean类型,boolean类型只有该两种true,false.非假即真,非真即假

  undefined类型,就是声明了变量但未给变量赋值,使用该变量是undefined

 null类型,一般用来占位,当某个变量的值或者方法不在需要时,用null赋值给该变量

样写错误但 var c=“123'可以,为字符串类型 ·

2.引用值

引用类型有object,Array等(对象,数组,函数)

原始值与引用值的区别

原始值放在栈(stack)中,

引用值放在堆(heap)中,

 原始值: var a=10, var b=a;  b的值相当于复制a的值,所以当a改变时,b不变

引用值类型:声明数组a并赋值,数组b=a. a.push(3)是往数组a中放入一个3.当a数组该变时b数组跟着改变

这是因为原始值放在栈中,引用值放在堆中

每个栈和堆都有地址和空间

原始值放入栈中是先找到地址,然后放在栈空间里

引用值放入堆中是先找到栈的地址,在栈的空间里放入堆的地址,通过堆的地址找到堆并放入堆空间中

所以引用值,数组b=a,a和b的栈空间里都是放的同一个堆地址,都是指向相同的值,当堆空间中的值改变时其余的都会改变

相当于多个钥匙同一个房间

这里为什么数组c改变时,d不变了?这是因为c=[1,3]是在堆中开辟了一个新空间,该堆的地址不一样了,c在栈空间放入新堆地址。c和d的栈空间中放入的堆地址也就不同,指向不同的堆。c=[1,3]相当于换了个钥匙换了个房间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值