1.JS小数计算不准确的bug
console.log(0.1 + 0.2);
console.log(0.1 + 0.2 == 0.3);
//答案: 0.30000000000000004
false
解决方案:parseFloat((0.1+0.2).toFixed(10));
2.讨论实现判断变量是否是整数的函数isInter(x)
的实现
在ES6中,是有现成的方法Number.isInteger
可以使用的
//1 异或运算
function isInter(x) {
return x ^ 0 === x
}
//2 取整
return Math.round(x) === x //同样可以用floor ceil
//取余
return (typeof x === 'number')&&(x % 1 === 0)
3.写一个sum方法,可以实现以下两种调用方式
//方法1
var sum = function(x,y) {
if(y === undefined) {
return function(y) {
return x + y;
}
}else {
return x + y;
}
}
//方法2
var sum = function(x){
if( arguments.length === 1) {
return function (y) {
return x + y;
}
} else {
console.log('here');
return arguments[0] + arguments[1];
}
}
4. 递归设计。 实现一个函数,给该函数一个DOM节点,函数访问其所有子元素(所有子元素,不仅仅是直接子元素),每次访问子元素的时候,并为其传一个callback。
访问一个DOM tree,是一个经典的深度优先搜索的算法
function Traverse(DOM,callback) {
callback(DOM);
var list = DOM.children;
Array.prototype.forEach.apply(list,(item)=>{
Traverse(item,callback); //递归
})
}