1.介绍一下JS内置类型有哪些
数据类型:1.6种原始类型 typeOf运算符检查 string,number,undefined,boolean,symbol,bigInt
2. null typeof instance === "object"
3. Object typeof instance === "object"
typeOf 操作符的唯一目的就是检查数据类型。由Object派生出来的结构类型用instanceOf 检查
数据结构:new Object,new Array,new Map,new Set,new WeakMap,new WeakSet,new Date,和几乎所有通过 new keyword 创建的东西。
2. 介绍一下typeOf区分类型的原理
为了性能的考虑使用低位存储变量的类型信息:
000:对象
1:整数
010: 浮点数
100:字符串
110:布尔类型
2个值比较特殊:
undefined: 用 - (−2^30)表示。
null : 对应机器码的NULL指针,一般是全零
null
是唯一一个用typeof
检测会返回object
的基本类型值(注意‘基本’两字)
具体的原因,当面试官问到,可以这样吹一波
不同的对象在底层都表示为二进制
在JavaScript中二进制前三位为0的话都会被判断为object类型
null的二进制表示全是0,自然前三位也是0
所以 typeof null === “object”
3.介绍一下类型转换
== 与 ===
常见的误区是“== 检查值是否相等,=== 检查值和类型是否相等”
正确的解释是:“== 允许在相等比较中进行强制类型转换,而 === 不允许。”
4.说说你对javascript的作用域的理解
1.词法作用域,和函数调用位置无关,和函数声明位置有关。
执行上下文的三个属性:变量对象,作用域链,this
变量对象:
查找变量对象先从当前上下文查找,如果没有找到,再从父级执行上下文的变量对象中查找,一直找到全局上下文的变量对象,也就是全局变量。
进入执行上下文时,首先会处理函数声明,然后再处理变量声明,如果变量声明和函数声明的名称一样的话,变量名称不会干扰已经存在的这类属性。
作用域链:
多个执行上下文查找变量对象的链表就叫做作用域链。
5. 说说你对执行上下文的理解
执行上下文栈:
全局执行上下文:默认的,不在任何函数的代码都位于全局上下文中
函数执行上下文:在执行一个函数的时候,就会创建执行上下文,并且压入执行上下文栈,当函数执行完后,就会将执行上下文从执行上下文栈中弹出。
this 总结好文
什么是cdn
cdn就是放服务器资源的一个仓库,就比如卖方便面的小卖部,如果小卖部的方便面卖完了,就要去方便面的工厂拿。