借助构造函数和浮点数的误差来做数学运算
Number((0.1 + 0.2).toFixed(1)) === 0.3;
使用“摊平参数”和“apply”做参数不固定的最值查找
const nums = [5, 3, 9, 1, 6];
const maxNum = Math.max.apply(null, nums);
const minNum = Math.min.apply(null, nums);
利用Array构造函数创建长度固定但值未定义的数组
const arrayOfUndefined = Array(3);
使用位运算符进行整数的快捷操作
let i = 2;
let square = i << 1;
let floatNum = 3.15;
let intNum = floatNum | 0;
利用void运算符来执行表达式且不返回结果
void function iife() {
var localVar = 'I am not returned';
console.log(localVar);
}();
console.log(typeof localVar);
使用逗号运算符链式执行多个表达式
let x = 1;
(x += 1, x *= 3);
console.log(x);
使用标签模板语法进行高级字符串操作
function highlight(strings, ...values) {
return strings.reduce((acc, str, i) => `${acc}${str}<mark>${values[i] || ''}</mark>`, '');
}
const name = "Alice";
const greeting = highlight`Hello there, ${name}`;
console.log(greeting);
利用 IIFE 和闭包保存状态
var elems = document.querySelectorAll('select option:checked');
var values = Array.prototype.map.call(elems, function(obj){
return obj.value;
});
使用数组解构来交换变量的值
let a = 1, b = 2;
[b, a] = [a, b];
console.log(a);
console.log(b);
使用逻辑或为函数参数提供默认值
function logName(name) {
name = name || 'Unknown';
console.log(name);
}
logName();
logName('Alice');