JS基础整理之数据类型

  1. JS的数据类型
    在ES5的时候,我们认知的数据类型确实是 6种:Number、String、Boolean、undefined、object、Null。
    ES6 中新增了一种 Symbol 。这种类型的对象永不相等,即始创建的时候传入相同的值,可以解决属性名冲突的问题,做为标记。
    其中:
    基本类型(单类型):除Object。 String、Number、boolean、null、undefined。
    引用类型:object。里面包含的 function、Array、Date。
  2. 数据类型的内存图
    栈:是有结构的,每个区块按照一定的次序存放。主要处理各种基本类型,包括null,undefined,boolean,number,string,bigint,以及对象的引用(即指针)。
    堆:是没有结构的,数据可以任意存放。主要处理引用类型: 对象、数组、函数等。首先从栈中获得该对象的地址指针,然后在从堆中取得数据。

遇到的一个面试题:const定义的值能修改么?
以平时的经验是不能的,但是平时我们使用const定义的值一般都是基本类型,它们的确不能被修改。但是如果使用const定义一个对象,这个对象的值是可以修改的。本质是什么?原因就是const定义对象的时候,我们说的常量其实就是上图中栈中的指针,就是const对象对应堆内存的指向是不变的,只要指向不变,修改这个对象的属性是可以的。看下面的代码:
在这里插入图片描述

const a = 1;
console.log(a);
a = 2;
//console.log(a);修改了a,报错
const obj = {a:1};
obj.a = 2;
console.log(obj);//不报错
  1. == 和 ===的区别
    == :不管数据类型是否相同,在数据类型的转换后相同即成立
    ===:如果数据类型不同直接为false

  2. null 和 undefined 的区别

    console.log(typeof (undefined));//undefined
    console.log(typeof (null));//object
    console.log(undefined == null) //true
    console.log(undefined === null) //false
    console.log(Number(null));//0
    console.log(Number(undefined));//NaN
    //if语句中都为false
    // null表示一个值被定义了,但是这个值是空值
    // undefined表示缺少值,即此处应该有值,但是还没有定义
    [阮一峰老师文章有提及](http://www.ruanyifeng.com/blog/2014/03/undefined-vs-null.html)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值