首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
JavaScript
南桥春雪君归处
创建于2023-02-09
订阅专栏
分享js相关的面试题
等 1 人订阅
共16篇文章
创建于2023-02-09
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
如何判断一个数据是数组
instanceof Array.isArray Object.prototype.toString.call
深拷贝和浅拷贝
对象如果只有一层(属性值都是基本数据类型)只用浅拷贝 Object.assign({},原始对象) {...obj} 对象如果有多层,只能用深拷贝 如果对象值不是函数,undefined这些,直接JS
set,map
set(集合)只要记住有一个用法:数组去重 map(字典)和对象很像 区别就是对象的属性名只能是字符串,而map的属性名是任意的 weakMap:弱引用 对垃圾回收机制更加友好,不需要用户不用手动删除
哪些情况内存泄露以及垃圾回收机制
哪些情况内存泄露 闭包 全局变量 垃圾回收机制 引用计数算法 一个值被变量用了就加1,如果发现引用次数是0就可以垃圾回收掉 缺点 如果是互相引用就不能被回收 标记清除算法 https://p1-jj.
闭包
概念:函数嵌套函数,且内部函数调用父级作用域的变量 函数套函数 子函数使用父函数中的变量 作用:实现变量的私有化 使用场景 循环里面的异步代码打印索引值会有bug,用闭包可以解决(不用说) 防抖和节流
splice,slice的区别
splice:用来删除\替换\插入数组中的元素的(利用p来记) slice:是用来拷贝数组一个片段的
浏览器常见缓存的区别
cookie 4kb 可以设置有效期 会自动携带到http请求头中 localStorage 5mb 永久,除非手动清除 sessionStorage 5mb 浏览器窗口关闭就没了 存储比较敏感的数据
说一说你对dom和bom的理解
dom 文档对象模型, 将网页文档看做了一个对象 常见的api document.getElementById docuemnt.querySelector bom 浏览器对象模型,将浏览器看做了一个
数组扁平化(拍扁)
思路一 利用数组flat方法: const arr = [2, [3, 4], 5, [[6]], [[[[[7]]]]]] console.log(arr.flat(Infinity));
数组去重
思路一:[...new Set([2,3,21])] 利用是set集合数据唯一性 思路二:创建一个新的空数组,遍历原始数组,如果发现元素在新数组里面没有,push进去,发现有就不管就可以
统计数组中出现次数最多的元素
思路:投票的思路 候选人第一次出现写名字还要写一个1,第二次出现找到这个人直接加1 先创建一个对象,然后开始遍历数组,如果发现这个元素项是第一次出现,就把这个元素项 作为对象的属性,值就是1,如果发现
forEach如何中断
``` const arr = [2, 3, 4] arr.forEach(item => { console.log(item); throw new Error() }) ```
如何中断for
break 离职 中止 continue 请一天假 跳过当前这一次循环 return 如果for循环在函数体中,也可以通过return中止
for..in/for..of的区别
for in:一般用来遍历对象 for of :一般用来遍历可迭代的数据结构,比如数组(array) arugments,nodeList,字符串(string)集合(set) 涉及Iterator
JS 的参数是以什么方式进行传递的
JS 的参数是以什么方式进行传递的 基本数据类型是值传递 引用数据类型是地址传递 ---------
字符串翻转
let str = 'hello'// ['h','e','l','l','o'] // 先转换成数组,然后翻转,然后变回字符串 console.log(str.split('').reverse()