20个JS简写技巧提升工作效率

目录
  • 当同时声明多个变量时,可简写成一行
  • 利用解构,可为多个变量同时赋值
  • 巧用三元运算符简化if else
  • 使用||运算符给变量指定默认值
  • 使用&&运算符简化if语句
  • 使用解构交换两个变量的值
  • 适用箭头函数简化函数
  • 使用字符串模板简化代码
  • 多行字符串也可使用字符串模板简化
  • 对于多值匹配,可将所有值放在数组中,通过数组方法来简写
  • 巧用ES6对象的简洁语法
  • 使用一元运算符简化字符串转数字
  • 使用repeat()方法简化重复一个字符串
  • 使用双星号代替Math.pow()
  • 使用双波浪线运算符(~~)代替Math.floor()
  • 巧用扩展操作符(...)简化代码
    • 简化数组合并
    • 单层对象的拷贝
    • 寻找数组中的最大和最小值
  • 使用for in和for of来简化普通for循环
  • 简化获取字符串中的某个字符
  • 移除对象属性
  • 使用arr.filter(Boolean)过滤掉数组成员的值falsey

前言:

最近看了一些简化JS代码的文章,其中有一篇觉得还不错,但是是英文的,也看了一些中文翻译,一个是一字一句翻译太生硬,没有变成自己的东西,另外就是后面作者有新增没有及时更新,于是我按照自己的语言翻译整理成此文,本文特点以言简意赅为主

当同时声明多个变量时,可简写成一行

//Longhand
let x;
let y = 20;

//Shorthand
let x, y = 20;

利用解构,可为多个变量同时赋值

//Longhand
let a, b, c;

a = 5;
b = 8;
c = 12;

//Shorthand
let [a, b, c] = [5, 8, 12];

巧用三元运算符简化if else

//Longhand
let marks = 26;
let result;
if (marks >= 30) {
   result = 'Pass';
} else {
   result = 'Fail';
} 

//Shorthand
let result = marks >= 30 ? 'Pass' : 'Fail';

使用||运算符给变量指定默认值

本质是利用了||运算符的特点,当前面的表达式的结果转成布尔值为false时,则值为后面表达式的结果

//Longhand
let imagePath;

let path = getImagePath();

if (path !== null && path !== undefined && path !== '') {
    imagePath = path;
} else {
    imagePath = 'default.jpg';
}

//Shorthand
let imagePath = getImagePath() || 'default.jpg';

使用&&运算符简化if语句

例如某个函数在某个条件为真时才调用,可简写

//Longhand
if (isLoggedin) {
    goToHomepage();
 }

//Shorthand
isLoggedin && goToHomepage();

使用解构交换两个变量的值

let x = 'Hello', y = 55;

//Longhand
const temp = x;
x = y;
y = temp;

//Shorthand
[x, y] = [y, x];

适用箭头函数简化函数

//Longhand
function add(num1, num2) {
  return num1 + num2;
}

//Shorthand
const add = (num1, num2) => num1 + num2;

需要注意箭头函数和普通函数的区别

使用字符串模板简化代码

使用模板字符串代替原始的字符串拼接

//Longhand
console.log('You got a missed call from ' + number + ' at ' + time);

//Shorthand
console.log(`You got a missed call from ${number} at ${time}`);

多行字符串也可使用字符串模板简化

//Longhand
console.log('JavaScript, often abbreviated as JS, is a\n' +
            'programming language that conforms to the \n' +
            'ECMAScript specification. JavaScript is high-level,\n' +
            'often just-in-time compiled, and multi-paradigm.'
            );

//Shorthand
console.log(`JavaScript, often abbreviated as JS, is a
            programming language that conforms to the
            ECMAScript specification. JavaScript is high-level,
            often just-in-time compiled, and multi-paradigm.`
            );

对于多值匹配,可将所有值放在数组中,通过数组方法来简写

//Longhand
if (value === 1 || value === 'one' || value === 2 || value === 'two') {
  // Execute some code
}

// Shorthand 1
if ([1, 'one', 2, 'two'].indexOf(value) >= 0) {
   // Execute some code
}

// Shorthand 2
if ([1, 'one', 2, 'two'].includes(value)) {
    // Execute some code
}

巧用ES6对象的简洁语法

例如:当属性名和变量名相同时,可直接缩写为一个

let firstname = 'Amitav';
let lastname = 'Mishra';

//Longhand
let obj = {firstname: firstname, lastname: lastname};

//Shorthand
let obj = {firstname, lastname};

使用一元运算符简化字符串转数字

//Longhand
let total = parseInt('453');
let average = parseFloat('42.6');

//Shorthand
let total = +'453';
let average = +'42.6';

使用repeat()方法简化重复一个字符串

//Longhand
let str = '';
for(let i = 0; i < 5; i ++) {
  str += 'Hello ';
}
console.log(str); // Hello Hello Hello Hello Hello

// Shorthand
'Hello '.repeat(5);

// 想跟你说100声抱歉!
'sorry\n'.repeat(100);

使用双星号代替Math.pow()

//Longhand
const power = Math.pow(4, 3); // 64

// Shorthand
const power = 4**3; // 64

使用双波浪线运算符(~~)代替Math.floor()

//Longhand
const floor = Math.floor(6.8); // 6

// Shorthand
const floor = ~~6.8; // 6

需要注意,~~仅适用于小于2147483647的数字

巧用扩展操作符(...)简化代码

简化数组合并

let arr1 = [20, 30];

//Longhand
let arr2 = arr1.concat([60, 80]); // [20, 30, 60, 80]

//Shorthand
let arr2 = [...arr1, 60, 80]; // [20, 30, 60, 80]

单层对象的拷贝

let obj = {x: 20, y: {z: 30}};

//Longhand
const makeDeepClone = (obj) => {
  let newObject = {};
  Object.keys(obj).map(key => {
      if(typeof obj[key] === 'object'){
          newObject[key] = makeDeepClone(obj[key]);
      } else {
          newObject[key] = obj[key];
      }
});

return newObject;
}

const cloneObj = makeDeepClone(obj);

//Shorthand
const cloneObj = JSON.parse(JSON.stringify(obj));

//Shorthand for single level object
let obj = {x: 20, y: 'hello'};
const cloneObj = {...obj};

寻找数组中的最大和最小值

// Shorthand
const arr = [2, 8, 15, 4];
Math.max(...arr); // 15
Math.min(...arr); // 2

使用for in和for of来简化普通for循环

let arr = [10, 20, 30, 40];

//Longhand
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}

//Shorthand
//for of loop
for (const val of arr) {
  console.log(val);
}

//for in loop
for (const index in arr) {
  console.log(arr[index]);
}

简化获取字符串中的某个字符

let str = 'jscurious.com';

//Longhand
str.charAt(2); // c

//Shorthand
str[2]; // c

移除对象属性

let obj = {x: 45, y: 72, z: 68, p: 98};

// Longhand
delete obj.x;
delete obj.p;
console.log(obj); // {y: 72, z: 68}

// Shorthand
let {x, p, ...newObj} = obj;
console.log(newObj); // {y: 72, z: 68}

使用arr.filter(Boolean)过滤掉数组成员的值falsey

let arr = [12, null, 0, 'xyz', null, -25, NaN, '', undefined, 0.5, false];

//Longhand
let filterArray = arr.filter(function(value) {
    if(value) return value;
});
// filterArray = [12, "xyz", -25, 0.5]

// Shorthand
let filterArray = arr.filter(Boolean);
// filterArray = [12, "xyz", -25, 0.5]

到此这篇关于20个JS简写技巧提升工作效率的文章就介绍到这了,更多相关JS简写技巧内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JavaScript 数组常见操作技巧 (二)

    目录 一.出数组中的重复元素或非重复元素 二.数组扁平化 / 数组降维 二维数组:双重循环 二维数组:循环 + concat 二维数组:reduce + concat 二维数组:展开 / apply + concat 多维数组:toString + split 多维数组:forEach + 递归 多维数组:reduce + 递归 多维数组:while + some 不确定维数的数组: flat 前言: 数组是 JavaScript 中常见数据类型之一,关于它的一些操作方法,我在这里做一下简单记录

  • JavaScript解构赋值的实用技巧指南

    目录 一.基本概念 二.解构分类 1. 对象的解构赋值 2. 数组的解构赋值 (1)字符串 (2)数组 (3)集合 (4)Map 三.嵌套解构 四.使用技巧 1. 函数解构 (1)解构函数参数 2. 循环中的解构 3. 动态属性解构 4. 交换变量 5. 数组拷贝 四.解构赋值注意点 总结 一.基本概念 为什么需要解构呢,先来看一个例子: const student = { name: 'ZhangSan', age: 18, scores: { math: 19, english: 85, c

  • JavaScript 数组常见操作技巧

    目录 一.创建数组 二.判断是不是数组 三.类数组和数组的转换 四.数组去重 1.利用 set 去重 2.双重循环 + splice 3.新建数组 + includes 4.reduce + includes 5.新建数组 + sort 6.新建数组 + 利用对象属性 7.利用 map 8.filter + indexOf 本文主要包括: 创建数组 判断是不是数组 类数组和数组的转换 数组去重 各位看官可根据自身需求选择食用. 一.创建数组 创建数组是基本功,其方法主要包括以下几种: const

  • 学习JavaScript一定要知道的3个小技巧

    目录 一.神奇的扩展运算符 1.拷贝数组 2.合并数组 3.展开对象 二.进行空检查的最佳方法 1.可选链操作符 2.空值合并运算符 三.使用 .map()..reduce() 和 .filter() 前言: 通常在 Angular 或 React 项目中,code review 时看到一些老式的 JavaScript 代码,就会将开发人员归类为初学者.但是,如果您知道以下 3 个技巧,您将被视为现代 JavaScript 的尤达大师.那么,让我们开始我们的旅程吧! 一.神奇的扩展运算符 扩展运

  • 分享5个JavaScript的写法小技巧

    目录 前言 过滤空值 数组对象解构 分隔数字 箭头函数直接返回对象 await 链条 总结 前言 JavaScript 易上手,但是难以全面掌握:它有许多“怪癖”,只有在长时间的使用它,才能逐渐揭开它神秘的面纱~ 本篇带来 JavaScript 几个片段代码,里面有些小技巧,肯定有你不知道~ 冲! 过滤空值 filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素. 注意: filter() 不会对空数组进行检测. 注意: filter() 不会改变原始数组.

  • 交互式可视化js库gojs使用介绍及技巧

    目录 1. gojs 简介 2. gojs 应用场景 3. 为什么选用 gojs: 4. gojs 上手指南 5. 小技巧(非常实用哦) 6. 实践:实现节点分组关系可视化交互图 最后 1. gojs 简介 gojs 是一个用于构建交互式可视化图的 js 库,使用可自定义的模板和布局构建复杂节点.链接和组,从而构建出简单到复杂的各类图,如流程图.脑图.组织图.甘特图等.而且提供了许多用于用户交互的高级功能,例如拖放.复制和粘贴.就地文本编辑...... gojs 是 Northwoods Sof

  • 四十九个javascript小知识实用技巧

    目录 一.js整数的操作 二.重写原生alert,记录弹框次数 三.数字交换不声明中间变量的方法 四.万物皆对象 五.If语句的变形 六.使用===,而不是== 七.使用闭包实现私有变量 八.创建对象的构造函数 九.小心使用typeof.instanceof和constructor 十.创建一个自调用函数(Self-calling Funtion) 十一.从数组中获取一个随机项 十二.在特定范围内获取一个随机数 十三.在0和设定的最大值之间生成一个数字数组 十四.生成一个随机的数字字母字符串 十

  • 分享7个杀手级JS小技巧

    目录 一.数组乱序 二.复制到剪贴板 三.数组去重 四.检测黑暗模式 五.滚动到顶部 六.滚动到底部 七.生成随机颜色 一.数组乱序 在使用需要某种程度的随机化的算法时,你会经常发现洗牌数组是一个相当必要的技能.下面的片段以O(n log n)的复杂度对一个数组进行就地洗牌. const shuffleArray = (arr) => arr.sort(() => Math.random() - 0.5) // 测试 const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9

  • 20个JS简写技巧提升工作效率

    目录 当同时声明多个变量时,可简写成一行 利用解构,可为多个变量同时赋值 巧用三元运算符简化if else 使用||运算符给变量指定默认值 使用&&运算符简化if语句 使用解构交换两个变量的值 适用箭头函数简化函数 使用字符串模板简化代码 多行字符串也可使用字符串模板简化 对于多值匹配,可将所有值放在数组中,通过数组方法来简写 巧用ES6对象的简洁语法 使用一元运算符简化字符串转数字 使用repeat()方法简化重复一个字符串 使用双星号代替Math.pow() 使用双波浪线运算符(~~)

  • JS 4个超级实用的小技巧 提升开发效率

    目录 1.短路判断 2.可选链操作符 ( ? ) 3.空值合并操作符 ( ?? ) 4.return终止函数 1.短路判断 当只需要简单的if条件时,可使用此方法 let x = 0; let foo = () => console.log('执行了'); if(x === 0){ foo() } 通过使用&&运算符来实现同样的if功能,如果&&之前的条件为false,则&&之后的代码将不会执行. let x = 0; let foo = () =&g

  • 分享几个快速提升工作效率的小工具(Listary等)

    给方法名命名的工具 不知道你是否有在给方法或者类起一个合适的方法名而苦苦思索,或者用翻译软件来进行翻译.现在有一个很好用的插件来了.四不四很期待.现在就让它隆重登场吧.Translation 直接在 Settings--->Plugins 中搜索Translation 进行安装就可以了. 安装后插件之后,接下来就是使用插件了,最简单的使用方法就是,描述好你想定义的方法的主要作用,如下:我有个任务处理的方法.在描述上右键 有两个选项栏,一个是Translate,一个是Translate and R

  • 如何使用JS console.log()技巧提高工作效率

    我们知道 console.log(message)用法很简单,表示将参数message 打印到控制台上. console.log('前端小智') // 前端小智 const myAge = 28 console.log(myAge) // 28 本文主要介绍5个有用的技巧,可帮助你在使用console.log()时提高工作效率. 1. 打印全名变量 如果在控制台打印多个变量,是数量比较多的情况下,我们很难区别哪个变量对应哪个值. function sum(a, b) { console.log(

  • 十大 Node.js 的 Web 框架(快速提升工作效率)

    Node.js 系统含有多种不同的结构,如 MVC.全栈.REST API 和生成器等.这些结构不仅提升了 Web 应用的开发效率,也优化了开发过程.在这里,我们收集整理了十个高效的 Node.js 框架,希望对你有帮助. 1.Node.js 开发框架 Sail.js Sails.js 就像是 Node.js 平台上的 Rails 框架.这是一个可靠可伸缩的开发框架,面向服务的架构,提供数据驱动的 API 集合.用来开发多玩家游戏.聊天应用和实时面板引用非常方便,也可用于开发企业级 Node.j

  • Git 命令使用技巧提供工作效率

    与其他技术相比,Git应该拯救了更多开发人员的饭碗.只要你经常使用Git保存自己的工作,你就一直有机会可以将代码退回到之前的状态,因此就可以挽回那些你深夜里迷迷糊糊犯下的错误. 尽管这么说,Git的命令行界面可是出了名的难掌握.接下来,就给大家介绍7个小技巧,最大限度发挥Git的作用. 通常,大部分时间我们都只会用到add.commit.branch和push/pull这些命令.大部分人熟悉这套只往一个方向运转的工作流.你们有没有想过,如果自己往仓库中添加了错误的文件,或是将代码提交到了错误的分

  • 让的PHP代码飞起来的40条小技巧(提升php效率)

    1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4; 2.echo的效率高于print,因为echo没有返回值,print返回一个整型; 3.在循环之前设置循环的最大次数,而非在在循环中; 4.销毁变量去释放内存,特别是大的数组; 5.避免使用像__get, __set, __autoload等魔术方法; 6.requiere_once()比较耗资源; 7.在includes和requires中使用绝对路径,这样在分析路径花的时间更少; 8.如果你需要得sexinsex到脚本执行时的

  • 18 个 Python 编程技巧,提高工作效率

    目录 01交换变量 02字典推导(Dictionarycomprehensions)和集合推导(Setcomprehensions) 03计数时使用Counter计数对象. 04漂亮的打印出JSON 05解决FizzBuzz 06if语句在行内 07连接 08数值比较 09同时迭代两个列表 10带索引的列表迭代 11列表推导式 12字典推导 13初始化列表的值 14列表转换为字符串 15从字典中获取元素 16获取列表的子集 17迭代工具 18FalseTrue 前言: 初识Python语言,觉得

  • 6个Python办公黑科技,助你提升工作效率

    目录 一.解析PDF(简历内推) 二.发送邮件 三.操作execl 1. 关联公式:Vlookup 2. 数据透视表 3. 对比两列差异 4. 去除重复值 5. 缺失值处理 6. 多条件筛选 7. 模糊筛选数据 8. 分类汇总 9. 条件计算 10. 删除数据间的空格 四.画图分析 五.解析word(docx.doc) 六.计算器 总结 一.解析PDF(简历内推) 应用场景:简历内推(解析内容:包括不限于姓名.邮箱.电话号码.学历等信息) 输入:要解析的文件路径 输出:需要解析的内容(点我主页,

  • 必备的JS调试技巧汇总

    前言:任何一个编程者都少不了要去调试代码,不管你是高手还是菜鸟,调试程序都是一项必不可少的工作.一般来说调试程序是在编写代码之后或测试期修改Bug 时进行的,往往在调试代码期间更加能够体现出编程者的水平高低以及分析问题的准确度.不少初学者在寻找错误原因时,总是不得要领,花费了大量时间却无法解决一些最终证明是相当简单的Bug.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今天,如何在前端开发中降低开发成本,

随机推荐