前端面经汇总

1. 看代码说结果

题目1:

const objA = { a: 1 };
const objB = { b: 2 };
const arrA = [objA];
const arrB = [objB];

const v1 = arrA.concat(arrB);
const v2 = arrA.concat(...arrB);
const v3 = arrA.push(arrB);
const v4 = arrA.push(...arrB);
console.log(v1); //[{a: 1},{b:2}]
console.log(v2);  //[{a: 1},{b:2}]
console.log(v3);  //2
console.log(v4);  //3

相关知识点:
点击看看运算扩展符的知识吧

  • push()方法返回的是数组长度,而 arrA.push(arrB) arrB只会作为了arrA的一个元素,如下图:
    在这里插入图片描述
  • 要合并或连接,则需要使用concat() 方法

concat() 方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。

//concat()把两个或者多个数组链接在一起,但是不改变已经存在的数组
//而是返回一个链接之后的新数组
var a = [1,2,3];
a.concat([4,5]);
console.log(a);
//此处输出为 [1, 2, 3]

var a = [1,2,3];
a = a.concat([4,5]);
console.log(a);
//此处输出为 [1, 2, 3 ,4 ,5]

题目2:

function Foo() {
    log = function () {
        console.log(1);
    };
    return this;
}
Foo.log = function () {
    console.log(2);
}
Foo.prototype.log = function () {
    console.log(3);
}
var log = function () {
    console.log(4);
}
function log() {
    console.log(5);
}

Foo.log(); //2
log(); //4
Foo().log();//1 
log(); //1
new Foo.log();//2
new Foo().log();//3

相关知识点:
JS Foo.getName笔试题解析,杂谈静态属性与实例属性,变量提升,this指向,new一个函数的过程

【JS点滴】声明提前,变量声明提前,函数声明提前,声明提前的先后顺序

js new一个对象的过程,实现一个简单的new方法

2.js如何解决异步问题,引出事件循环

3.token登录,token怎么验证,原理,前端怎么处理

4.conputed 属性和methods 方法有什么区别

从源码上看
在这里插入图片描述
在这里插入图片描述
结果:
computed 只执行了一次,methods执行两次在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值