数据类型的一些容易被忽略的知识

今天讲js数据类型

众所周知js有八大数据类型,分别是字符串(String)、数字(Number)、布尔(Boolean)、数组(Array)、对象(Object)、空(Null)、未定义(Undefined)。

而众所又周知,js八大数据类型分别分为 基本数据类型 和 引用数据类型两大类

基本数据类型:Number 、String、 Boolean 、undefined 、null

引用数据类型:Object  Array  function

1.基本数据类型存储在“栈”中,是按照值来传递的;

var a=10;

var b=a;

b=20;

console.log(a)

总结:b的改变,并不会影响a的值;

2.引用数据类型是保存在“堆”’中的一个对象,有自己独特的地址,所以我们对这个对象进行操作的时候,只能操作一个对象在栈内存中的引用地址。

第一个案例

var obj1 = new Object();

var obj2 = obj1;

obj2.name = "123";

console.log(obj1.name);

第二个案例

var obj=new Object()

obj.name="132"

obj

{name: '132'}

var obj2=new Object()

obj2.name="132"

obj2

{name: '132'}

obj===obj2

返回一个false

总结:obj2的改变,会影响obj1;也就是说,obj1和obj2都指向了同一个堆里面的对象,obj2=obj1,实际上是把堆内存的地址复制给了obj2

区别举个例子就可以知道:

1可以打个比方把基本数据类型当作游戏里面的本地数据,哪怕你开修改器修改,仍然只会修改本地的数据,修改不了服务器里面的数据

2.那么引用数据类型就是服务器的数据,想要改变他就需要充钱,或者肝,才能改变服务器的数据

四:刚刚讲到堆和栈,我们可以简单的说一下

堆和栈的区别:其实也跟这个例子差不多,

栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;特点:先进后出,好比一根烧烤,我串的时候先串第一个,烤完之后,你想吃最后一个,肯定是先把第一个第二个第三个吃完,才能吃到最后一个

堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

五、6大假值:

false

null

undefined

0

' ' (空字符串)

NaN(算是一种Number类型)

函数返回值:return

由return可以做到很多灵活的操作,比如说惰性函数,回调,递归等等

六、Js的数据还有一个特点就是动态数据

var x;
var x = 5;
var x = "John";

变量x的数据类型可以被改变,而且可以一直被改变,这就是动态数据

Number类型

var a=123;小数bug

js 的计算中涉及到小数的运算,比如  0.1+0.2 的计算

就会出现错误,我们来试一下

能被计算机读懂的是二进制,而不是十进制,所以我们先把 0.1 0.2 转换成二进制看看

0.2.toString(2)

所以以后为了避免这种情况可以先把一个数乘以10n次方,让其变成一个整数,相加之后再除以10n次方

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值