译者:王二狗
博客:掘金、思否、知乎、简书、CSDN
点赞再看,养成习惯,你们的支持是我持续分享的最大动力
原文链接:https://www.sitepoint.com/shorthand-javascript-techniques/

三元操作符

使用三元操作符可以让你的if...else多行语句变成一行

简化前:

const x = 20;
let answer;if (x > 10) {answer = "greater than 10";
} else {answer =  "less than 10";
}

简化后:

const answer = x > 10 ? "greater than 10" : "less than 10";

短路操作符

当进行变量赋值的时候,你可能需要确保被用来赋值的变量不是nullundefined或者为

简化前:

if (variable1 !== null || variable1 !== undefined || variable1 !== '') {let variable2 = variable1;
}

简化后:

const variable2 = variable1  || 'new';

是不是感觉难以置信 ,试一试下面的代码:

let variable1;
let variable2 = variable1  || 'bar';
console.log(variable2 === 'bar'); // prints truevariable1 = 'foo';
variable2 = variable1  || 'bar';
console.log(variable2); // prints foo

需要注意的是,如果 varibale1 的值为 false 或者是 0 ,则 'bar' 将会被赋值给 varibale2.

声明变量

简化前:

let x;
let y;
let z = 3;

简化后:

let x, y, z=3;

if判断是否存在

简化前:

let a;
if ( a !== true ) {// do something...
}

简化后:

let a;
if ( !a ) {// do something...
}

for 循环

简化前:

const fruits = ['mango', 'peach', 'banana'];
for (let i = 0; i < fruits.length; i++)

简化后:

for (let fruit of fruits)

如果你想得到数组元素的下标,你可以这样子写:

for (let index in fruits)

当你用这种方法获取对象的key时仍然有效

const obj = {continent: 'Africa', country: 'Kenya', city: 'Nairobi'}
for (let key in obj)console.log(key) // output: continent, country, city

对象属性

简化前:

const x = 1920, y = 1080;
const obj = { x:x, y:y };

简化后:

const obj = { x, y };

return

简化前:

function calcCircumference(diameter) {return Math.PI * diameter
}

简化后:

calcCircumference = diameter => (Math.PI * diameter;
)

参数是默认值

简化前:

function volume(l, w, h) {if (w === undefined)w = 3;if (h === undefined)h = 4;return l * w * h;
}

简化后:

volume = (l, w = 3, h = 4 ) => (l * w * h);volume(2) //output: 24

模板文本

简化前:

const welcome = 'You have logged in as ' + first + ' ' + last + '.'const db = 'http://' + host + ':' + port + '/' + database;

简化后:

const welcome = `You have logged in as ${first} ${last}`;const db = `http://${host}:${port}/${database}`;

解构赋值

简化前:

const observable = require('mobx/observable');
const action = require('mobx/action');
const runInAction = require('mobx/runInAction');const store = this.props.store;
const form = this.props.form;
const loading = this.props.loading;
const errors = this.props.errors;
const entity = this.props.entity;

简化后:

import { observable, action, runInAction } from 'mobx';const { store, form, loading, errors, entity } = this.props;

你甚至可以在解构的同时对变量重新命名:

const { store, form, loading, errors, entity:contact } = this.props;

... 运算符

简化前:

// joining arrays
const odd = [1, 3, 5];
const nums = [2 ,4 , 6].concat(odd);// cloning arrays
const arr = [1, 2, 3, 4];
const arr2 = arr.slice()

简化后:

// joining arrays
const odd = [1, 3, 5 ];
const nums = [2 ,4 , 6, ...odd];
console.log(nums); // [ 2, 4, 6, 1, 3, 5 ]// cloning arrays
const arr = [1, 2, 3, 4];
const arr2 = [...arr];

你还可以使用 ...运算符在一个数组的任意位置去嵌入另一个数组:

const odd = [1, 3, 5 ];
const nums = [2, ...odd, 4 , 6];

...es6 的解构赋值一起使用也很强大

const { a, b, ...z } = { a: 1, b: 2, c: 3, d: 4 };
console.log(a) // 1
console.log(b) // 2
console.log(z) // { c: 3, d: 4 }

Array.find

简化前:

const pets = [{ type: 'Dog', name: 'Max'},{ type: 'Cat', name: 'Karl'},{ type: 'Dog', name: 'Tommy'},
]function findDog(name) {for(let i = 0; i<pets.length; ++i) {if(pets[i].type === 'Dog' && pets[i].name === name) {return pets[i];}}
}

简化后:

pet = pets.find(pet => pet.type ==='Dog' && pet.name === 'Tommy');
console.log(pet); // { type: 'Dog', name: 'Tommy' }

指数幂

简化前:

Math.pow(2,3); // 8
Math.pow(2,2); // 4
Math.pow(4,3); // 64

简写后:

2**3 // 8
2**4 // 4
4**3 // 64

字符串转数字

简化前:

const num1 = parseInt("100");
const num2 =  parseFloat("100.01");

简化后:

const num1 = +"100"; // converts to int data type
const num2 =  +"100.01"; // converts to float data type

Object.entries()

这是一个 es8 中出现的特性,允许你把一个对象转换成具有键值对的数组。

const credits = { producer: 'John', director: 'Jane', assistant: 'Peter' };
const arr = Object.entries(credits);
console.log(arr);/** Output:
[ [ 'producer', 'John' ],[ 'director', 'Jane' ],[ 'assistant', 'Peter' ]
]
**/

Object.values()

Object.values() 同样是 es8 里面出现的一个新特性,它和 Object.entries() 功能类似,但是在最终的转换数组中没有 key

const credits = { producer: 'John', director: 'Jane', assistant: 'Peter' };
const arr = Object.values(credits);
console.log(arr);/** Output:
[ 'John', 'Jane', 'Peter' ]
**/

告诫自己,即使再累也不要忘记学习,成功没有捷径可走,只有一步接着一步走下去。 共勉!

if else 简写_15+ JS简写骚操作,让你的代码“秀”起来??相关推荐

  1. 【Python基础】pandas的骚操作:一行 pandas 代码搞定 Excel “条件格式”!

    来源:Python数据科学 作者:东哥起飞 本篇是pandas100个骚操作系列的第 7 篇:一行 pandas 代码搞定 Excel "条件格式"! 系列内容,请看????「pa ...

  2. 数据分析学习 excel的骚操作合集(则秀excel课程笔记)

    文章目录 前言 一.自动填充 二.选取区域 三.复制与粘贴 四.公式与函数 五.输入公式 六.快速求和 七.绝对引用 八.if函数 九.sumif,averageif函数 十.定义名称 十一.数字与数 ...

  3. 最骚操作的二分查找,秀儿?

    文章目录 你不知道的事 骚算法 测试 测试结果 你不知道的事 你肯定听说过在有序数组中,通过二分算法查找等于指定的值?但是- 你是否听说过在有序数组中,通过二分算法查找大于等于指定的值的最左下标? 你 ...

  4. 表白和被表白时遇到的骚操作,最后一个天秀!| 今日最佳

    全世界只有3.14 % 的人关注了 青少年数学之旅 [1] [2] [3] [4] [5] [6] [7] [8] [9]

  5. 骚操作!一行Python代码能干嘛

    点击 机器学习算法与Python学习 ,选择加星标 精彩内容不迷路 下面给大家介绍50个有趣的Python一行代码,都很实用. 希望大家能从中找到对自己有帮助的技巧. ▍1.字母异位词 两个单词如果包 ...

  6. python多线程抢红包代码_Python有哪些神一般的骚操作? 远远不止抢车票、抢红包《附代码》...

    ​ 有人说,"Python除了不会生孩子,Python从撩妹到装x,无所不能!什么都会!" 下载视频?我用Python: 玩跳一跳?我用Python跳到4999分: 撩妹子?依然用 ...

  7. python有哪些码_Python有哪些神一般的蜜汁操作? 《附代码》

    有人说,"Python除了不会生孩子,Python从撩妹到装x,无所不能!什么都会!" 下载视频?我用Python: 玩跳一跳?我用Python跳到4999分: 撩妹子?依然用Py ...

  8. python有哪些代码_Python有哪些神一般的蜜汁操作?(附代码),

    Python有哪些神一般的蜜汁操作?(附代码), 有人说,"Python除了不会生孩子,Python从撩妹到装x,无所不能!什么都会!" 下载视频?我用Python; 玩跳一跳?我 ...

  9. js控制台 console 骚操作-打印图片-自定义样式-字符画

    目录 控制台打印骚操作 自定义样式 打印(输出)图片 借助平台打印字符(符号组成) Lunicode 平台操作 图片转字符打印 控制台打印骚操作二 效果图 代码实现 错误案例 方式一(感觉有点乱) 方 ...

最新文章

  1. 饭卡(HDOJ2546)
  2. 全球最美的15座数据中心
  3. SQL各种join用法
  4. URL中#号(井号)的作用
  5. C++运算符与类型转换
  6. JavaScript游戏开发简介
  7. git怎么操作会丢失自己的代码_git找回丢失的代码
  8. ECS中的Entity实体
  9. python 保留的类标识符
  10. pycharm英语怎么读_PyCharm常用设置
  11. JS高级程序设计(10)
  12. Web测试和App测试区别
  13. 惯导IMU,INS,AGV的区别
  14. BatchOutput PDF 2.2.32 Mac 破解版 PDF文档自动批量打印工具
  15. lzg_ad:FBW控制台命令详解
  16. 晶振旁的电阻(并联与串联)
  17. Java/web/jsp根据pdf模板生成荣誉证书PDF文件
  18. 跨平台剪贴板同步工具盘点
  19. 浅谈常用的几种web攻击方式以及解决办法
  20. JS相等(==)和全等(===)区别

热门文章

  1. play!framework框架概述
  2. 商城项目-商品添加功能实现
  3. 物流项目宣传活动任务前台分页展示
  4. 性能测试(03)-JDBC Request
  5. 【代码示例】 一个简单的Java死锁
  6. 如何画功能稳定,美观的PCB?
  7. 2013 javaB3 振兴中华、从我做起
  8. ios 后台唤醒应用_IOS开发之----详解在IOS后台执行
  9. git submodule 的使用
  10. 洞悉linux下的Netfilteriptables