日常知识点

  |  
 阅读次数

stringify: JSON转字符串

toString: 返回原型数组 // 返回字符串

ValueOf: 输出对象

toLocalString: 格式化时间字符串

V-bind用法: 计算属性基于this依赖进行缓存

Computed 与 Method 区别: Computed基于依赖缓存; Method每次都重新计算

前端-数据双向绑定

node-爬虫

Git plugin

学习笔记 (2019年7月3日 16:06:27)

前端面试难点

1
2
3
4
5
6
7
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(new Date, i);
}, 1000);
}

console.log(new Date, i);

输出结果(第一个5后连续输出五个5)

5 -> 5,5,5,5,5

解读:
定时器为异步宏任务,在JS解释器EventLoop事件队列最末尾。须等待同步任务、异步微任务执行完后执行。


IIFE(Immediately Invoked Function Expression:声明即执行的函数表达式)

自执行函数表达式

1
2
3
4
5
6
7
for (var i = 0; i < 5; i++) {
~function(j) { // j = i
setTimeout(function() {
console.log(new Date, j);
}, 1000);
}(i);
}

解释:利用闭包解决ES5没有块级作用域问题

1
2
3
4
5
6
function output(j) {
setTimeout(fn, j * 1000)
}
for (var i = 0; i < 5; i++) {
output(i)
}

解释: JS 中基本类型(Primitive Type)的参数传递是按值传递(Pass by Value)的特征

Promise

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const tasks = []; // 这里存放异步操作的 Promise
const output = i => new Promise(resolve => {
setTimeout(() => {
console.log(new Date, i);
resolve();
}, 1000 * i);
});

// 生成全部的异步操作
for (var i = 0; i < 5; i++) {
tasks.push(output(i));
}

// 异步操作完成之后,输出最后的 i
Promise.all(tasks).then(() => {
setTimeout(() => {
console.log(new Date, i);
}, 1000);
});

学习笔记(2019年7月4日 17:11:44)

promise 和 await/async 的区别

以往的异步方法无外乎回调函数Promise。但是Async/await建立于Promise之上。

display:table-cell下两栏自适应布局demo

等高布局