js基础拾遗

null 和 undifined 的区别

  1. null 是保留关键字,undefined 是 js 内置属性,局部作用域下可以被赋值,可以使用 void 0 来代替
  2. null 是原型链的终点
  3. Number(null) --> 0; Number(undefined) --> NaN;
  4. null 表示空,undefined 表示未声明或者声明了但是未赋值的变量

typeof & instanceof

  • typeof主要用来判断基础类型,除了 null 返回 object(二进制,js 中前三位为 0,则判为对象,null 全为 0),其他都能准确返回对应类型,引用类型除了 function 返回 function,其他都返回 object。
  • instanceof用来判断构造函数的原型对象(prototype)在不在实例对象的原型链上。
  • Object.prototype.toString.call(),推荐使用这种方式来判断类型,每一种都能准确获得。
// 推荐判断方式
export const getType = source => Object.prototype.toString.call(source).replace(/\[object\s(.*)\]/, '$1');

执行上下文

js 代码是在执行上下文中执行的,三种执行上下文。

  • 全局执行上下文,默认的,在浏览器中是 window 对象,并且 this 在非严格模式下指向它
  • 函数执行上下文,JS 的函数每当被调用时会创建一个上下文
  • Eval 执行上下文,eval 函数会产生自己的上下文,这里不讨论

栈,先进后出,当引擎第一次遇到 JS 代码时,会产生一个全局执行上下文并压入执行栈,每遇到一个函数调用,就会往栈中压入一个新的上下文。引擎执行栈顶的函数,执行完毕,弹出当前执行上下文。

函数式编程

关键词:纯函数,不可变,声明式,表达式。

纯函数:对相同输入得到的结果都是同样的,并且没有产生任何副作用。

babel 编译原理

  • babylon 将 ES6/ES7 代码解析成 AST
  • babel-traverse 对 AST 进行遍历转译,得到新的 AST
  • 新 AST 通过 babel-generator 转换成 ES5

原型和原型链

理解很重要,我基本是靠一张图记忆下来的。
2021-01-10_prototype

js 进制转换

10进制  --> 其他进制: Number(val).toString([2,8,10,16])
其他进制 --> 10进制:  Number.parseInt('val',[2,8,10,16])

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yokiizx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值