We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本周发起了一个100天前端进阶计划,每天一个知识点,搞明白背后的原理,这是第二周的总结,请注意查收。
以面试题的形式看自己本周掌握了多少。
class Chameleon { static colorChange(newColor) { this.newColor = newColor return this.newColor } constructor({ newColor = 'green' } = {}) { this.newColor = newColor } } const freddie = new Chameleon({ newColor: 'purple' }) freddie.colorChange('orange')
解析: colorChange 是一个静态方法。静态方法被设计为只能被创建它们的构造器使用(也就是 Chameleon),并且不能传递给实例。因为 freddie 是一个实例,静态方法不能被实例使用,因此抛出了 TypeError 错误。
详细分析请看 详解ES6中的class
function setName(obj) { obj.name = 'luckyStar'; obj = new Object(); obj.name = 'litterStar' } const person = new Object(); setName(person); console.log(person.name);
解析: 在函数内部修改了参数的值,但是原始的引用仍然保持未变。 实际上,在函数内部重写 obj时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕之后立即销毁。
详细分析请看 理解var,const,let
var name = 'Tom'; (function() { if (typeof name == 'undefined') { var name = 'Jack'; console.log('Goodbye ' + name); } else { console.log('Hello ' + name); } })();
解析: 立即执行函数的中的变量 name 的定义被提升到了顶部,并在初始化赋值之前是 undefined,所以 typeof name == 'undefined'
undefined
typeof name == 'undefined'
async 函数原理就是 Generator函数 和 自动执行器包装了一下。具体的来说:async就是一个generator 在 promise 的resolve状态下 执行next 并把值当做next的参数 封装起来的语法糖。
async
Generator
详细分析请看 async原理解析
sleep
每隔1秒输出 1, 2, 3, 4, 5
function sleep(interval) { return new Promise(resolve => { setTimeout(resolve, interval); }) } // 用法 async function one2FiveInAsync() { for (let i = 1; i <= 5; i++) { console.log(i); await sleep(1000); } } one2FiveInAsync();
function sleep(duration) { return new Promise(resolve => { setTimeout(resolve, duration); }) } async function changeColor(color, duration) { console.log('当前颜色', color); await sleep(duration); } async function main() { await changeColor('红色', 2000); await changeColor('黄色', 1000); await changeColor('绿色', 3000); } main();
Promise.all()
// 写法一 let [foo, bar] = await Promise.all([getFoo(), getBar()]); // 写法二 let fooPromise = getFoo(); let barPromise = getBar(); let foo = await fooPromise; let bar = await barPromise;
解析: 上面两种写法,getFoo 和 getBar 都是同时触发,这样就会缩短程序的执行时间。
构造函数
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
本周发起了一个100天前端进阶计划,每天一个知识点,搞明白背后的原理,这是第二周的总结,请注意查收。
以面试题的形式看自己本周掌握了多少。
1.下面代码输出什么
答案
答案:TypeError
解析:
colorChange 是一个静态方法。静态方法被设计为只能被创建它们的构造器使用(也就是 Chameleon),并且不能传递给实例。因为 freddie 是一个实例,静态方法不能被实例使用,因此抛出了 TypeError 错误。
2.下面代码输出什么
答案
答案: luckyStar
解析:
在函数内部修改了参数的值,但是原始的引用仍然保持未变。
实际上,在函数内部重写 obj时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕之后立即销毁。
3. 下面代码输出什么
答案
答案: Goodbye Jack
解析:
立即执行函数的中的变量 name 的定义被提升到了顶部,并在初始化赋值之前是
undefined
,所以typeof name == 'undefined'
4. async原理是什么
答案
答案:
async
函数原理就是Generator
函数 和 自动执行器包装了一下。具体的来说:async就是一个generator 在 promise 的resolve状态下 执行next 并把值当做next的参数 封装起来的语法糖。5.实现一个
sleep
每隔1秒输出 1, 2, 3, 4, 5
答案
答案:
6.实现一个红绿灯: 红灯2秒,黄灯1秒,绿灯3秒
答案
7.使用
async
实现Promise.all()
的效果答案
答案:
解析: 上面两种写法,getFoo 和 getBar 都是同时触发,这样就会缩短程序的执行时间。
8. class的原理是什么,什么是静态方法/属性,super是什么
答案
构造函数
去创建的。9. var,let,const区别是什么
答案
10.算法题
The text was updated successfully, but these errors were encountered: