面试题
1、如何解决0.1+0.2= 0.30000000000000004
js中浮点数采用IEEE 754标准的双精度浮点数表示。
数字在转换成二进制的时候,会有不能整除的情况,根据精度(双精度浮点数)取64位有效值。再转化为十进制就是0.3000……4.
解决方法:toFixed
let a = 0.11,b = 0.2801,d = 1.002;
let c = a + b + d;
let e = c.toFixed(4);
parseFloat(c.toFixed(10))
2、实现一个数结构的菜单
2.1递归调用 以斐波那契数列为例
var Fibonacci = function(n){
if(n <= 2){
return 1
}else{
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
let x = Fibonacci(10);
console.log("Fibonacci",x)
2.2
树结构菜单实现
参考treeMenu文件夹
3、设计如下一个场景
10个ajax同时发起,全部响应后展示所有返回结果,如果最多容忍3个http请求失败。
4、如何实现 a==1&&a==2
const a = { i: 1, toString: function () { return a.i++; }};
console.log(a == 1 && a == 2 && a == 3);
这里讲的是js的隐式转换,当a为对象时,js会调用toString方法,我们修改了toString方法,每次运行完a会加一,所以等式成立。
隐士转换: 对象 -字符串 -数字
布尔-数字