if else 简写_15+ JS简写骚操作,让你的代码“秀”起来??
译者:王二狗
博客:掘金、思否、知乎、简书、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";
短路操作符
当进行变量赋值的时候,你可能需要确保被用来赋值的变量不是null
、undefined
或者为空
。
简化前:
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简写骚操作,让你的代码“秀”起来??相关推荐
- 【Python基础】pandas的骚操作:一行 pandas 代码搞定 Excel “条件格式”!
来源:Python数据科学 作者:东哥起飞 本篇是pandas100个骚操作系列的第 7 篇:一行 pandas 代码搞定 Excel "条件格式"! 系列内容,请看????「pa ...
- 数据分析学习 excel的骚操作合集(则秀excel课程笔记)
文章目录 前言 一.自动填充 二.选取区域 三.复制与粘贴 四.公式与函数 五.输入公式 六.快速求和 七.绝对引用 八.if函数 九.sumif,averageif函数 十.定义名称 十一.数字与数 ...
- 最骚操作的二分查找,秀儿?
文章目录 你不知道的事 骚算法 测试 测试结果 你不知道的事 你肯定听说过在有序数组中,通过二分算法查找等于指定的值?但是- 你是否听说过在有序数组中,通过二分算法查找大于等于指定的值的最左下标? 你 ...
- 表白和被表白时遇到的骚操作,最后一个天秀!| 今日最佳
全世界只有3.14 % 的人关注了 青少年数学之旅 [1] [2] [3] [4] [5] [6] [7] [8] [9]
- 骚操作!一行Python代码能干嘛
点击 机器学习算法与Python学习 ,选择加星标 精彩内容不迷路 下面给大家介绍50个有趣的Python一行代码,都很实用. 希望大家能从中找到对自己有帮助的技巧. ▍1.字母异位词 两个单词如果包 ...
- python多线程抢红包代码_Python有哪些神一般的骚操作? 远远不止抢车票、抢红包《附代码》...
有人说,"Python除了不会生孩子,Python从撩妹到装x,无所不能!什么都会!" 下载视频?我用Python: 玩跳一跳?我用Python跳到4999分: 撩妹子?依然用 ...
- python有哪些码_Python有哪些神一般的蜜汁操作? 《附代码》
有人说,"Python除了不会生孩子,Python从撩妹到装x,无所不能!什么都会!" 下载视频?我用Python: 玩跳一跳?我用Python跳到4999分: 撩妹子?依然用Py ...
- python有哪些代码_Python有哪些神一般的蜜汁操作?(附代码),
Python有哪些神一般的蜜汁操作?(附代码), 有人说,"Python除了不会生孩子,Python从撩妹到装x,无所不能!什么都会!" 下载视频?我用Python; 玩跳一跳?我 ...
- js控制台 console 骚操作-打印图片-自定义样式-字符画
目录 控制台打印骚操作 自定义样式 打印(输出)图片 借助平台打印字符(符号组成) Lunicode 平台操作 图片转字符打印 控制台打印骚操作二 效果图 代码实现 错误案例 方式一(感觉有点乱) 方 ...
最新文章
- 饭卡(HDOJ2546)
- 全球最美的15座数据中心
- SQL各种join用法
- URL中#号(井号)的作用
- C++运算符与类型转换
- JavaScript游戏开发简介
- git怎么操作会丢失自己的代码_git找回丢失的代码
- ECS中的Entity实体
- python 保留的类标识符
- pycharm英语怎么读_PyCharm常用设置
- JS高级程序设计(10)
- Web测试和App测试区别
- 惯导IMU,INS,AGV的区别
- BatchOutput PDF 2.2.32 Mac 破解版 PDF文档自动批量打印工具
- lzg_ad:FBW控制台命令详解
- 晶振旁的电阻(并联与串联)
- Java/web/jsp根据pdf模板生成荣誉证书PDF文件
- 跨平台剪贴板同步工具盘点
- 浅谈常用的几种web攻击方式以及解决办法
- JS相等(==)和全等(===)区别