====== 差别 ======
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
前端专刷_代码题 [2022/01/24 14:12] 若愚 |
前端专刷_代码题 [2022/01/25 16:57] 若愚 |
||
---|---|---|---|
行 4: | 行 4: | ||
## 闭包 | ## 闭包 | ||
1. 输出什么? | 1. 输出什么? | ||
- | |||
```javascript | ```javascript | ||
for(var i=0; i<6; i++) { | for(var i=0; i<6; i++) { | ||
行 11: | 行 10: | ||
}) | }) | ||
} | } | ||
+ | ``` | ||
+ | |||
+ | ## 异步、Promise输出 | ||
+ | 1. 输出什么 | ||
+ | ```javascript | ||
+ | async function async1 (){ | ||
+ | console.log(" | ||
+ | await async2() | ||
+ | console.log(" | ||
+ | } | ||
+ | console.log(" | ||
+ | async1() | ||
+ | async function async2() { | ||
+ | await console.log(" | ||
+ | } | ||
+ | new Promise((resolve, | ||
+ | console.log(" | ||
+ | resolve() | ||
+ | }).then(()=> | ||
+ | console.log(" | ||
+ | }) | ||
+ | setTimeout(()=> | ||
+ | console.log(" | ||
+ | }) | ||
+ | ``` | ||
+ | 2. 输出什么 | ||
+ | ```javascript | ||
+ | setTimeout(()=> | ||
+ | |||
+ | new Promise(resolve => { | ||
+ | resolve() | ||
+ | console.log(2) | ||
+ | }).then(_ => { | ||
+ | console.log(3) | ||
+ | Promise.resolve().then(_ => { | ||
+ | console.log(4) | ||
+ | }).then(_ => { | ||
+ | Promise.resolve().then(_ => { | ||
+ | console.log(5) | ||
+ | }) | ||
+ | }) | ||
+ | }) | ||
+ | |||
+ | console.log(6) | ||
+ | ``` | ||
+ | |||
+ | ## this、作用域、声明前置、隐式转换 | ||
+ | 1. 以下代码输出 | ||
+ | ```javascript | ||
+ | var a = function(){ this.b = 3 } | ||
+ | var c = new a() | ||
+ | a.prototype.b = 10 | ||
+ | var b = 7 | ||
+ | a() | ||
+ | console.log(b)// | ||
+ | console.log(c.b)// | ||
+ | ``` | ||
+ | |||
+ | 2. 代码输出什么 | ||
+ | ```javascript | ||
+ | function Foo() { | ||
+ | getName = function () { | ||
+ | console.log(1); | ||
+ | } | ||
+ | } | ||
+ | var getName = function () { | ||
+ | console.log(4); | ||
+ | }; | ||
+ | function getName() { | ||
+ | console.log(5); | ||
+ | } | ||
+ | Foo.getName = function () { | ||
+ | console.log(2) | ||
+ | } | ||
+ | Foo.prototype.getName = function () { | ||
+ | console.log(3); | ||
+ | } | ||
+ | Foo.getName() | ||
+ | getName() | ||
+ | new Foo.getName() | ||
+ | ``` | ||
+ | 1. 隐式转换 | ||
+ | ```javascript | ||
+ | if ([]) console.log(1); | ||
+ | if ([].length) console.log(2); | ||
+ | if ([] == 0) console.log(3); | ||
+ | if ({} === {}) console.log(4); | ||
``` | ``` | ||
行 16: | 行 102: | ||
1. 给两个数组[1, | 1. 给两个数组[1, | ||
2. 无重复的字符串字串 | 2. 无重复的字符串字串 | ||
+ | 3. 合并两个有序链表 | ||
+ | 4. 最长回文子串 | ||
+ | 5. 最长无重复字符子串 | ||
+ | 6. 搜索二叉树,找出第k大 | ||
+ | 7. 很长的字符串返回出现次数最多的字母以及相应次数 | ||
+ | 8. 多叉树的最大深度 | ||
+ | 9. js实现树的深度优先搜索、广度优先搜索 | ||
+ | 10. 返回前k个最小的数字组成的数组,保持相对顺序 | ||
+ | |||
## 手写 | ## 手写 | ||
- | 1. 手写一个Promise.all | + | 1. 手写一个Promise.all |
+ | 2. 手写Promise,包含简单的逻辑即可 | ||
2. 用reduce实现map | 2. 用reduce实现map | ||
- | + | 3. 手写一个repeat函数,要求每隔3秒alert一次helloWorld,总共输出4次 | |
+ | ```javascript | ||
+ | function repeat(func, | ||
+ | ... | ||
+ | } | ||
+ | var rp = repeat(alert, | ||
+ | rp(' | ||
+ | ``` | ||
+ | 4. 字符串转化为数字 | ||
+ | ```javascript | ||
+ | // ' | ||
+ | // ' | ||
+ | // ' | ||
+ | ``` | ||
+ | 5. 手写观察者(3), 带once | ||
+ | 6. 代码题:写一个函数打印杨辉三角前n行 | ||
+ | ```javascript | ||
+ | [ | ||
+ | [1], | ||
+ | [1,1], | ||
+ | [1,2,1], | ||
+ | [1, | ||
+ | [1, | ||
+ | ] | ||
+ | ``` | ||
+ | 6. 用call/ | ||
+ | 7. 实现大数相加 | ||
+ | 8. 手写防抖节流 | ||
+ | 9. 实现并发控制 | ||
+ | 10. 写一个instanceof的实现 | ||
+ | 11. 字符串 转换为对象。 比如 a.b.c, | ||
+ | ```javascript | ||
+ | { | ||
+ | a: { | ||
+ | b: { | ||
+ | c: null | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | ``` |