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点滴】声明提前,变量声明提前,函数声明提前,声明提前的先后顺序
2.js如何解决异步问题,引出事件循环
3.token登录,token怎么验证,原理,前端怎么处理
4.conputed 属性和methods 方法有什么区别
从源码上看
结果:
computed 只执行了一次,methods执行两次