js数据类型

  1. 基本数据类型(值类型): Number、String、Boolean、Undefined、Null、Symbol(es6新增独一无二的值) 
  2. 引用数据类型: Object。包含Object、Array、 function、Date、

备注: 基本数据类型,又称值类型。
基本数据类型都存储在栈里,且基本数据类型都是深拷贝。 

值类型栈存储: 主要针对(Number、String、Boolean)三种数据。直接存储在栈(stack)中,占据空间小、大小固定,属于被频繁使用数据,所以放入栈中存储。

例如:

当我们执行下方代码时栈内存中的变化:

var a=100;

var b=100;

a=200;

引用类型堆栈存储:存储在堆栈中的唯一变量是函数的局部变量。对于引用类型,引用存储在堆栈中,而引用的对象存储在堆上。对于值类型,对象本身存储在堆栈中。请注意,可以从本地函数中转义的局部变量(例如通过闭包)存储在堆上的单独数据结构中,包括可能包含的任何值类型。 换句话说,由于引用类型总是存储在堆上,因此它们包含的任何内容(甚至值类型)也都存储在堆上。 

引用数据类型都存储在堆里,在栈中有一个id指向堆中的数据。 

备注:

引用类型存储把值存储在堆内存中,堆内存是从下往上存储。生成唯一内存地址。然后在栈内存中把地址赋值给变量。栈内存是从上往下存储的。之所以如此划分内存主要考虑到特别大的对象进行值传递时的效率问题。 

注意:当拷贝引用对象时,拷贝的只是栈中的id,并没有形成新的数据,当我们改变任意一个变量中的属性时,那么在堆里面的数据会被修改 

深拷贝

 变量计算-类型转换

1. 字符串拼接

var s1 = "abc" , s2 = "def";
console.log(s1 + s2);  //返回字符串“abcdef”

 连接字符串最简便的方法是使用加号运算符。

2. ==与===

 

总结:

  1. ===三等表示全等,判断左右两边对象或值是否类型相同值相等
  2. ==二等表示值相等。判断操作符两边对象或值是否相等类型可以不同,类型不同时,使用Number()转换成Number类型在进行判断。

       类型转换规则:1)如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。

                         2)如果等号两边出现了null或undefined,null和undefined除了和自己相等,就彼此相等

       注意:NaN==NaN  //返回false,NaN和所有值包括自己都不相等。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值