2021-12-1 js基础学习

1.数组的哪些方法会改变原数组

splice/reverse/fill/copyWithin/sort/push/pop/unshift/shift

不修改原数组的有 slice/map/forEach/every/filter/reduce/entries/find

2. 在JS中什么是变量提升?什么是暂时性死区?

变量提升就是变量在声明之前就可以使用,值为undefined。

在代码块内,使用 let/const 命令声明变量之前,该变量都是不可用的(会抛出错误)。这在语法上,称为“暂时性死区”

暂时性死区也意味着 typeof 不再是一个百分百安全的操作。

3. prototype 和 proto 区别是什么?

prototype是构造函数的属性。

proto 是每个实例都有的属性,可以访问 [[prototype]] 属性。

实例的__proto__ 与其构造函数的prototype指向的是同一个对象。

4.Promise和setTimeout的区别 ?

Promise 是微任务,setTimeout 是宏任务,同一个事件循环中,promise.then总是先于 setTimeout 执行。

5.什么是函数柯里化?实现 sum(1)(2)(3) 返回结果是1,2,3之和

函数柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。


function sum(a) {
    return function(b) {
        return function(c) {
            return a+b+c;
        }
    }
}
console.log(sum(1)(2)(3)); // 6

6.v-if和v-for的那个优先级更高,如果两个同时出现,应该怎么优化得到更好的性能

1、v-for优先于v-if被解析

2、如果同时出现,每次渲染都会先执行循环在判断条件,无论如何循环都不可避免,浪费了性能

3、要避免出现这种情况,在外层嵌套template,在这一层进行v-if判断,然后在内部进行v-for循环

上一篇:节流函数


下一篇:冲刺随笔——Day5