介绍下 Set、Map、WeakSet 和 WeakMap 的区别?
Set
add、delete、hasWeakSet
add、delete、has;Map
WeakMap
get、set、has、delete;js 中有哪几种内存泄露的情况
json和xml数据的区别
参考答案:
最小值和最大值:
- console.log(Math.min()) // Infinity
- console.log(Math.max()) // -Infinity
- console.log(Infinity > -Infinity) // true
delete能删除的:
(1)可配置对象的属性(2)隐式声明的全局变量 (3)用户定义的属性 (4)在ECMAScript 6中,通过 const 或 let 声明指定的 "temporal dead zone" (TDZ) 对 delete 操作符也会起作用
delete不能删除的:
(2)显式声明的全局变量 (2)内置对象的内置属性 (3)一个对象从原型继承而来的属性
- // 非严格模式下:
- // 全局变量
- var showvar = 30; // 显式声明 删除不了
- delete showvar;
- console.log(showvar) // 30
- hidevar = 20; // 隐式声明 删除成功
- delete hidevar;
- //console.log(hidevar) // ReferenceError
-
- // 严格模式下 隐式声明全局变量会报错,且无法使用delete标识符
-
delete删除数组元素:
(1)当你删除一个数组元素时,数组的 length 属性并不会变小,数组元素变成undefined
(2)当用 delete 操作符删除一个数组元素时,被删除的元素已经完全不属于该数组。
(3)如果你想让一个数组元素的值变为 undefined 而不是删除它,可以使用 undefined 给其赋值而不是使用 delete 操作符。此时数组元素是在数组中的
defer和async区别
区别主要在于一个执行时间,defer会在文档解析完之后执行,并且多个defer会按照顺序执行,而async则是在js加载好之后就会执行,并且多个async,哪个加载好就执行哪个。
async:有async的话,加载和渲染后续文档元素的过程将和 script.js 的加载与执行并行进行(异步)。但是多个js文件的加载顺序不会按照书写顺序进行。
derer:有derer的话,加载后续文档元素的过程将和 script.js 的加载并行进行(异步),但是 script.js 的执行要在所有元素解析完成之后,DOMContentLoaded 事件触发之前完成,并且多个defer会按照顺序进行加载。
(学习来源:牛客网)