1、如何中断promise
return new Promise(()=>{}) 返回一个初始值即可
或者使用catch
2、如何获取async失败的回调
用 try catch 就会可以获取到
3、描述下拉加载的开发思路?
4、 5.2>”11″与”2″>”11″的结果相同吗,为什么?
2和"11",数字与字符串比较大小时,将字符串转成数字
"2"和“11”字符串比较大小时,通过ascll码比较
5、其他数据类型转换成布尔值是false的值都有哪些?
“”,0,undefined,null,NaN
6、以下代码对吗?请解释为什么?
class Person{ } class Student extends Person { constructor(name) { this.name = name super() } } let s = new Student() ;
答:不对,子类里面的constructor如果要使用this,必须在之前先调用super()
7、localStorage的方法有哪些(要求写方法的参数),localStorage一个域下最多存储多少数据?
方法有:
getItem(key)
setItem(key, value)
removeItem(key)
clear()
存储大小是5M
8、如何改变this指向,call apply bind区别?
接收参数的方式不同:
(1)call
形式:call (this要指向对象,传参逐个列举(可能多个))
(2)apply
形式:apply(this要指向对象,arguments) 或 fn.apply(this要指向对象, 传参的数组)
(3)bind
形式:bind(this要指向对象) 不会立即执行,并且返回一个改变this指向的函数。
所以,bind后函数不会执行,而只是返回一个改变了上下文的另一个函数,而call和apply是直接执行函数。若无参数,apply与call基本没什么区别
9、如何解决循环绑定事件中不能获取索引的问题?
…
let
10.为什么console.log(0.1+0.2===0.3);//false
js中数字用双精度存储
0.1这种数字用二进制无法整除
位数太多而存储空间有限,取近似值