奇安信秋招/春招
3.11 春招一面
const func = async ()=>{ console.log('hello'); await pause(1000); // 暂停1秒 console.log('world'); } 实现 pause 方法
12.6 秋招一面
1. js声明变量方式、以及let const var区别、除了这个还有别的声明变量方式吗
2. js数据类型,怎么判断null? null和undefined区别?
-
=== null判断
-
null
空值(空指针对象),表示一个对象被认为重置为空对象,在内存中表示栈中的变量没有指向堆中的内存对象
-
undefined
声明一个变量,没有赋值;访问对象不存在的属性或者未定义的变量
3. 怎么判断一个数据类型是数组?
-
typeof返回一个字符串,表示未经计算的操作数类型 (object,function可以判断的)
typeof(null) //object
-
instanceof返回一个布尔值,可以准确判断复杂引用数据类型
instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上
-
Object.prototype.toString.call(),统一返回[object xxx]的字符串
-
判断数组?
除了上述方法,
isArray方法可以判断
constructor也可以判断,但是可以人为修改 const arr = [ ] arr.constructor === Array //true
4. 引入js的方式,import是什么规范?
1. <script src="....js"> 2. improt ES6的标准
5. Promise.all?Promise一般怎么用
-
Promise.all
方法接收一个Array,Map,Set类型的输入,并且只返回一个Promise实例, 那个输入的所有promise的resolve回调的结果是一个数组。这个Promise的resolve回调执行是在所有输入的promise的resolve回调都结束,或者有任何一个输入的promise的reject回调执行或者输入不合法的promise就会立即抛出错误,并且reject的是第一个抛出的错误信息。
-
Promise用法
主要应用于向发服务端发起请求等异步操作;
Promise.all实现并行执行任务
then链可以实现按顺序执行的任务
6. 绝对定位、相对定位?position取值
7. this是什么?改变this指向的方式,以及他们的区别
this指当前执行上下文的一个属性。在非严格模式下,总是指向一个对象,在严格模式下可以使任意值
this永远指向最后调用它的那个对象
改变this指向的方式:
-
call()
接受若干个参数列表
-
bind()
创建一个新的函数,在手动调用时才会运行
-
apply()
调用一个函数,其具有一个指定的this值,以及作为一个数组提供的参数(接受一个包含多个参数的数组)
8. 箭头函数和普通函数区别
-
箭头函数的this指向的是父级作用域的this,是通过查找作用域链来确定 this 的值也就是说,看的是上下文的 this,指向的是定义它的对象,而不是使用时所在的对象;普通函数指向的是它的直接调用者。
-
箭头函数不能使用new来创建
-
不可以使用arguments对象