Skip to content

JS 基础复习笔记(面试用)

Published: at 10:54 PMSuggest Changes

记一下巩固 js 时碰到的一些基础知识

原型,原型链,继承

闭包

一个函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包(closure)。

那么 高阶函数是闭包吗?

this 及箭头函数

记不住 this 到底指向谁,我用这个方法记 普通的 this:谁找我,我跟谁 箭头函数的 this:谁造我,我跟谁

面试官可能问箭头函数有什么好处:this 指向不可改变

箭头函数坏处呢?

  1. 箭头函数没有自己的 this 对象(详见下文)。
  2. 不可以当作构造函数,也就是说,不可以对箭头函数使用 new 命令,否则会抛出一个错误。
  3. 不可以使用 arguments 对象,该对象在函数体内不存在。如果要用,可以用 rest 参数代替。
  4. 不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数。

instanceof 和 typeof

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。 typeof 操作符返回一个字符串,表示未经计算的操作数的类型。

简单举例一下好处和坏处 好处:判断值是否存在

if (typeof a === 'undefined') {
  console.log('error');
}

instanceof 修改了原型之后 比较就为 false 了 typeof new 一个 String Functiuon 类型的 会返回 Object

V8 的内存回收机制,避免内存泄露

这个得慢慢去看

  1. 尽可能少地创建全局变量
  2. 手动清除定时器
  3. 少用闭包
  4. 清除 DOM 引用
  5. 弱引用 WeakMap weakSet

call,bind,apply

{% post_link js-call-bind-apply 我的 bind,apply,call 笔记 %}

promise

js 是单线程的,所以执行方式是异步的,promise 是为了解决异步编程中的一些问题,比如回调地狱,让编程更加的直观健壮 然后它也是一个异步操作,代表的是最终的完成还是失败。但通过这样的一个方式你可以把它看成同步执行,而不会阻塞浏览器的运行。

手写 promise1 手写 promise2 手写 promise3

{% post_link js-promise 手写 promise %}

Event Loop 宏任务 微任务

笔记挺好

手写

其他

react

vue


Previous Post
JS 常见的拷贝方法,手写一个深拷贝
Next Post
JS 闭包