归结JS基础知识点。

69 阅读3分钟

1 . JavaScript 有几种数据类型?
Number : 数字类型
String : 字符串类型
booleanv : 布尔值类型
undefined : 未定义类型
null : 空值类型
object : 对象类型 symbol : symbol类型 bigint : 大数字类型

2. Javascript最大安全数字与最小安全数字
	console.log(Number.MAX_SAFE_INTEGER)
	// 9007199254740991

	console.log(Number.MIN_SAFE_INTEGER)
	// -9007199254740991

3. 深,浅拷贝与赋值的区别。

浅拷贝只拷贝一层,引用类型拷贝指针,基本类型拷贝值,拷贝栈,不拷贝堆。
深拷贝将一个对象从内存中完整拷贝一份出来,内存中开辟新的区域来存储修改。
深拷贝中新对象的修改不会影响原始对象,浅拷贝中新对象更改,旧对象也会更改。
深拷贝是将一个对象从内存中完整的拷贝出来,从堆内存中开辟一个新区域存放新对象,且修改新对象不会影响原对象。
赋值:
当我们把一个对象赋值给一个新的变量时赋的值其实是栈中的地址,而不是堆中的数据,两个对象指向同一个存储空间。

new操作符的执行过程:
(1)创建一个空对象。
(2)把这个对象的构造原型_proto_type 指向函数原型对象prototype 并绑定this。
(3)执行构造函数中的代码 。
(4)如果构造函数中有return返回值则 return,没有则返回空对象this。

闭包:

是指一个函数,有权访问外部作用域中的变量,那么这个函数则称之为闭包。
(1),优点内部函数可以有权访问外部函数的局部变量。

(2),缺点内部函数引用的变量存储在内存中,不会被立刻销毁,延长了函数变量的生命周期,导致内存泄露。

内存泄漏:
(1)意外的全局变量: 由于使用未声明的变量,而意外创建了一个全局变量,使该变量一直存在于内存中,从而无法被回收。
(2)被遗忘的计时器和回调函数:setInterval 定时器忘记取消,如果其对外部变量有引用的话,会被一直存在与内存中
(3)脱离DOM的引用
(4)闭包 	

浏览器的垃圾回收机制:
(1)标记清除
标记阶段为所有活动对像做标记,清除阶段吧无标记,非活动的对象。
缺点:内存碎片化,分配速度慢。
(2)引用计数
把对象是否需要简化为对象是否引用它,没有引用,计数为0 对象被回收。
缺点:需要一个计数器。

箭头函数和普通函数有什么区别

1) 更加简洁,如果没有参数可以直接写空括号,
	只有一个参数时省去参数的括号,
	包含多个参数时,用逗号分割,返回值只有一个时,可以省略大括号。
	如函数体不需要返回值,且只有一句话,可以添加void
	/////////////////////////////////////
2) 箭头函数没有自己的this 只能继承自己作用域的上一层的this指向,继承来的this指向不会发生变化。

call apply bind 不能改变其this的指向。 
3)箭头函数不能作为构造函数,没有自己的arguments 没有prototype 所以不能new一个箭头函数。


isNaN 和Number.isNaN的区别
1)函数 isNaN接收参数后会试图将该参数转化为数值,任何不能被转化为数值的值都会被返回true,非数值也返回true 影响NaN的判断。
2Number.isNaN首先判断传入的是否为数字,再判断是否为NaN,不会进行数据类型转换,对于NaN的判断更准确。