1:全局变量到处都能用,会带来什么坏处?
全局变量容易造成命名冲突,难调试,长期占用内存,
2:写代码typeof能查数据类型那typeof null返回啥?怎么判断一个变量是不是数组?
typeof null会返回object怎么判断变量是不是数组通过Array.isArray
3:假值是什么?
假值是在布尔值判断时自动转为false的值
4:拿DOM举例,说说什么是获取节点,什么是创建节点?创建完新标签,怎么把它加到页面上
获取节点:从现在页面dom树里拿到已经写好的标签创造节点:js凭空生成的标签创建后使用appendchild添加到dom标签上显示
5:事件流分捕获、目标、冒泡三个阶段,简单白话解释冒泡阶段。怎么同时给同一个 DOM 绑定多个 click 事件?怎么移除事件监听?简单一句话概括
冒泡是事件从点击元素向上逐级传给父元素;同一 DOM 多次addEventListener('click',fn)绑定多个点击事件;移除监听要使用和绑定一致的回调函数,匿名函数无法移除。
6:form表单标签是干嘛的?input上面name属性如果不写,提交表单会发生什么?
form用来包裹表单控件实现一键提交数据input不写name提交时这个input的数据不会被带到请求中
7:数组方法 filter、concat、sort各自干什么?哪些数组方法会改动原数组?
filter用于筛选出新数据,concat用于拼接新数据,sort用于排序并修改原数据改原数据的要有,pop,push,shift,unshift,sort
8:什么叫回调函数?简单举一个数组方法里面回调函数的例子。
回调函数:把一个函数当成参数传给另一个函数,等到时机在执行这个传进去的函数9:call、apply、bind三个方法,都能修改this指向,三者区别是什么?
call和appiy是立刻执行函数,bind是返回函数不会马上执行。call参数逗号传,apply参数放对象里
10:Promise出现是为了解决什么老问题?Promise.all()和Promise.race()分别适合什么业务场景
Promise 解决回调地狱;all 适合多任务全部完成再处理;race 适合竞速,取最先完成的结果,常用于请求超时
11:async函数返回的一定是Promise对象吗?await后面可以直接写普通数字吗
async 函数必然返回 Promise;await 后面能写普通值,会自动包装为成功态 Promise。
12:什么是生成器 generator?简单说说作用。
生成器可以暂停,恢复执行的函数用function定义yield暂停并产出值
13:什么是代理 Proxy?Proxy主要用来拦截对象的哪些操作?
Proxy 是给对象套一层拦截外壳。拦截对象读写、删属性、in 判断、函数调用、new 创建等底层操作,Vue3 响应式底层就是 Proxy。
14:Object.assign能干什么?它是深拷贝还是浅拷贝?
Object.assign把多个源对象属性赋值到目标对象返回目标对象他是浅拷贝
15:Object.keys()、Object.values()、Object.entries()分别拿到对象的什么内容?
keys用于拿键,values用于拿值,entrirs用于拿键值对数组
16:startswith有什么用处
判断字符串是不是以指定内容开头
17:什么是事件委托(事件代理)?事件委托原理是什么?有什么好处?
事件委托利用冒泡事件绑定父元素,节省内存,新子节点不用再绑定事件
18:location对象能干什么?
location是dom对象专门操作浏览器地址栏url可以读地址,
19:什么是解构函数,new关键词干了哪几件事?
构造函数批量生成实例对象。new创造空对象>绑定原型>绑定this并执行函数>返回新对象