几个 JavaScript 奇技淫巧?
#1 使用双等号给布尔变量赋值,很容易联想到 var a = b || 123; 的写法 var a = b == 123; #2 快速转换为布尔值 !!a #3 防止页面被 iframe 调用 if(top !== window) { top.location.href = window.location.href; } #4 将 arguments 参数组转换为真实数组 function args() { return [].slice.call(arguments, 0); } args(2, 5, 0); //[2, 5, 0] #5 查找数组中的最大值 var arr = [2, 3, 45, 12, 8]; Math.max.apply(null, arr); //45 #6 NaN 不等于自己 NaN === NaN; // false #7 0.81 * 10 结果是 8.100000000000001,JS 对浮点数处理存在问题,修复方法如下 0.81 * 100 * 10 / 100 或者(注意返回值是字符串) (0.81 * 10).toFixed(1)
#8
从数组 m 中随机取出 n 个值,看代码:
var m = [1,2,3,4,5,6,7,8,9,'a','b','c','d','e','#']; function randArray(m, len) { m.sort(function () { return Math.random() - 0.5; }); return m.slice(0, len); } console.log(randArray(m, 4));