面试题
null和undefined的区别
1.作者在设计js的都是先设计的null (为什么设计了null∶最初设计js的时候借鉴了java的语言)
2. null会被隐式转换成e,很不容易发现错误。
3.先有null后有undefined,出来undefined是为了填补之前的坑。
具体区别: JavaScript的最初版本是这样区分的: null是一个表示"无"的对象(空对象指针),转为数值时为0;und值,转为数值时为NaN。
==和===的区别
1.==比较的是值,相应值会隐式转换为其他类型
console.log(null==undefined);//true console.log(1=='1') console.log(1==true) console.log([1,2]=='1,2')
2.===除了比较值,还会比较类型
JS微任务和宏任务
1.js是单线程的语言。
2.js代码执行流程:同步执行完==》事件循环同步的任务都执行完了,才会执行事件循环的内容进入事件循环:请求、定时器、事件....
3.事件循环中包含:【微任务、宏任务】微任务:promise.then
宏任务: setTimeout. .
要执行宏任务的前提是清空了所有的微任务
流程:同步==》事件循环【微任务和宏任务】==》微任务==》宏任务=》微任务...
JS作用域考题
1.除了函数外,js是没有块级作用域。
2.作用域链:内部可以访问外部的变量,但是外部不能访问内部的变量。
注意:如果内部有,优先查找到内部,如果内部没有就查找外部的。3.注意声明变量是用var还是没有写(window . )
4.注意∶js有变量提升的机制【变量悬挂声明】
5.优先级:声明变量〉声明普通函数〉参数>变量提升
JS对象考题
1.对象是通过new操作符构建出来的,所以对象之间不想等;
2.对象注意:引用类型;
3.对象的key都是字符串类型;
4.对象如何找属性|方法;
先在对象本身找===>构造函数中找===>对象原型中找===>构造函数原型中找