web开发必备

前端开发必须掌握的知识(JS篇 一)

JS基础是前端开发吃饭的家伙,必须掌握!

变量和类型

1.javascript规定了几种语言类型?

基本类型和引用类型

基本类型:String、Number、Boolean、Null、Undefined、Symbol
引用类型:Object类型(细分的话又分为Object 类型、Array 类型、Date 类型、Function 类型、RegExp 类型)

基本类型的变量存放于栈中(Stack),是按值访问的。
引用类型一般是一个保存在堆内存(Heap)中的对象,因此我们在操作对象时实际是在操作对象的引用,而不是实际对象(引用类型的值是按引用来访问的。)

注:JavaScript 不能直接操作对象的内存空间(堆内存)。

2.JavaScript中的变量在内存中的具体存储形式

  • JS中的变量分为基本数据类型和引用类型,结合代码和图理解如下:
//基本数据类型  (存放于栈中)
let a = 1;     
let b = '字符串';
let c = null;
//引用类型  
let obj = {a: 1};
let arr = [1,2,3];

如图,基本类型是保存在栈内存中的简单数据段,值大小都是固定的,在拷贝时,系统会给变量分配一个新值,变量之间相互独立,互不影响。
引用类型保存在堆内存中的对象里,栈内存中存放该对象的访问地址,该地址指向堆内存中的对象,JavaScript不允许直接访问堆内存中的位置,因此操作对象时,实际操作的是对象的访问地址(如引用类型拷贝时,同样是给新的变量obj2分配一个新的值,保存在栈内存中,不同的是,这个值仅仅是引用类型的一个地址指针obj和obj2指向同一个值,也就是地址指针相同,在堆内存中访问到的具体对象实际上是同一个,所以obj2.a变化时,obj.a也会变化。)
在这里插入图片描述

3.null和 undefined的区别

在js中,null和undefined都表示一个无效的值,几乎没区别,甚至在if语句中,都会被自动转为false,相等运算符直接报告两者相等

if (!undefined) { console.log('11'); }    //11
if (!null) { console.log(22) }      //22
undefined == null      //true

但是undefined === null 结果会报false,因为全等操作在比较相等性的时候,不会主动转换分项的数据类型,而两者又不属于同一种类型。

null和undefined在js语义里是明确区分的:

null表示一个值被定义了,定义为空值,undefined表示根本不存在定义
所以设置一个值为 null 是合理的,如 a.num= null;但设置一个值为 undefined 是不合理的,如a.name=undefined;(判断一个值是否存在,就可以用undefined , 不能使用 null ,因为 undefined == null,而 null 表示该值定义为空值。)

4.JavaScript对象的底层数据结构是什么

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值