Js代码使用技巧速览

借助构造函数和浮点数的误差来做数学运算

javascript 复制代码
Number((0.1 + 0.2).toFixed(1)) === 0.3; // true

使用"摊平参数"和"apply"做参数不固定的最值查找

javascript 复制代码
const nums = [5, 3, 9, 1, 6];
const maxNum = Math.max.apply(null, nums); // 9
const minNum = Math.apply(null, nums);     // 1

利用Array构造函数创建长度固定但值未定义的数组

javascript 复制代码
const arrayOfUndefined = Array(3); // [undefined, undefined, undefined]

使用位运算符进行整数的快捷操作

javascript 复制代码
// 快速地求平方
let i = 2;
let square = i << 1; // 等价于 i * 2 或 i ** 2

// 快速地从浮点数中丢弃小数部分取整
let floatNum = 3.15;
let intNum = floatNum | 0; // 3

利用void运算符来执行表达式且不返回结果

javascript 复制代码
void function iife() {
  var localVar = 'I am not returned';
  console.log(localVar);
}();

console.log(typeof localVar); // undefined

使用逗号运算符链式执行多个表达式

javascript 复制代码
let x = 1;
(x += 1, x *= 3);
console.log(x); // 6

使用标签模板语法进行高级字符串操作

javascript 复制代码
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); // "Hello there,<mark>Alice</mark>"

利用 IIFE 和闭包保存状态

javascript 复制代码
var elems = document.querySelectorAll('select option:checked');
var values = Array.prototype.map.call(elems, function(obj){
  return obj.value;
});

使用数组解构来交换变量的值

javascript 复制代码
let a = 1, b = 2;
[b, a] = [a, b];
console.log(a); // 2
console.log(b); // 1

使用逻辑或为函数参数提供默认值

javascript 复制代码
function logName(name) {
  name = name || 'Unknown';
  console.log(name);
}
logName(); // 'Unknown'
logName('Alice'); // 'Alice'
相关推荐
大熊程序猿10 分钟前
用 ASP.NET Core + SignalR 做一个带实时对战房间的打字练习平台
javascript
OpsEye16 分钟前
大量无效 Token 消耗,是很多企业被忽略的隐形成本
javascript·ai编程
鬼手点金2 小时前
单轮对话:最简单的 API 调用
java·服务器·前端·javascript·react.js·servlet·tomcat
罗丹丹Luna3 小时前
JavaScript计算任务峰值并发:同一时刻先结束还是先开始
javascript
古夕3 小时前
同样的 font-weight,为什么这个项目的字体就是更细?
前端·javascript
牛肉胡辣汤3 小时前
Blender + Three.js 开发讲解:从 .blend 到能转的产品页
开发语言·javascript·blender
程序员大阳4 小时前
副队长JavaScript教程(20)–三元运算符、逗号运算符
javascript·三元运算符·逗号运算符
Ai-_Man6 小时前
我需要批量导出Poe左边栏所有对话,而不是一条具体的对话内容,你们AI导出鸭可以吗?
开发语言·前端·javascript·人工智能·小程序
u0111026757 小时前
Vue 页面离开后还在轮询?统一清理计时器、监听器与观察器
前端·javascript·vue.js
大猩猩X7 小时前
vue 表格组件 vxe-table 实现多行编辑,支持增删改查与校验
前端·javascript·vue.js·vxe-table