分类:JS
更新时间:2022-10-29
202210面试题目总结
https://blog.csdn.net/qq_60976312/article/details/125783396
$# this的理解,call、bind、apply的区别;$
this的指向取决于上下文环境,谁调用该函数,该函数的this就指向谁,this指向使用它时坐在的对象;
区别:
- call、bind、apply都是改变this指向;
call和apply接收的参数不一样,call(target, value), apply(target, [value]), call的第二个参数是字符串,apply的第二个参数是数组;call、apply都是直接调用,而bind则返回一个函数,需要手动调用: bind(target, value)()
$# 数组slice和splice的作用及区别;$
截取数组生成新数组;
区别:
1. slice可以用于数组和字符串的截取;
2. splice 会改变原有值,而slice不会;
3. splice 除了可以删除之外还可以插入元素;
$# JS基本类型有哪些,基本类型和引用数据类型有什么区别?$
string, int, number, object, null, undefind, bigInt, symbol
基本类型和引用类型的区别:存放位置,基本类型存在栈里,而引用类型存放在堆里(数据大小可能会变,存堆里提升后续计算的一个性能)
$# 简单说一下JS的事件循环;宏、微任务有哪些$
事件循环:
先执行微任务,再执行宏任务,遇到微任务将当前任务丢到微任务队列,遇到宏任务则丢进宏任务队列,依次循环;
宏任务: script, setTimerOut, setInteval, setImmediate(node), UI事件, I/O
微任务: promise.then(), promise.catch(), process.nextTick()
$# Diff算法的理解$
$# 组建封装应该注意什么?$
1、可拓展性 如slot
2、易用性
3、命名规范性
$# promise是什么,有哪三种状态?特点是什么?$
解决异步编程的一种方案,语法上promise是一个构造函数;用于异步计算;
pending(等待), fulfilled(完成), rejected(拒绝)
特点:
1、对象状态不受外界影响,状态一旦确定无法被改变;
2、报错无法通过外部的try catch获取,只能由函数内部抛出;会触发rejected状态,并且执行.then, .catch中的reject的回调;
$# 手写防抖节流$
`js
const dom = document.getElementById("dd")
const handleClick = myDebounce(v => {
console.log(v)
}, 1000, true)
function myDebounce(fn, t = 500, im = false) {
let timer,
imvoke = false
return function() {
timer && clearTimeout(timer) // 防抖
// if (timer) return // 节流
if (im && !imvoke) {
fn.apply(this, arguments)
imvoke = true
}
timer = setTimeout(() => {
fn.apply(this, arguments)
timer = null
}, t)
}
}
`
$# Vue 常见的修饰符有哪些,作用分别是什么? $
.stop 阻止事件冒泡
.prevent 阻止默认事件触发
.self 点击当前元素,event.target等于元素本身的时候才会触发
.passive 事件的默认行为立即执行,无需等待事件回调执行完毕;
.capture 事件优先被捕获,如果嵌套多个.capture,那么优先级由外到里
.once 只执行一次
$# Vue 自定义指令用过哪些?$
v-if、v-else、v-show、v-model、v-html、v-text....
$# Vue v-for 可以和 v-if一起使用吗? 为什么?$
不能
v-for的优先级大于v-if,每次v-for都会执行v-if,造成不必要的计算,影响性能
$# Vue v-if v-else 两个input,没有给key值,来回切换会发生什么?$
input里面的值还是原来的值;
因为Vue在dom渲染的时候,出于性能考虑,尽可能的复用原来的元素,而不是重新创建
$# Vue keep-alive 会执行哪两个hooks,两个钩子的用法是什么?$
actived: 组件激活时调用
deactived:组件失活时调用
$# Vue 的特点是什么,和React有什么区别?$