12 种优秀的 JavaScript 速记技巧
12 种优秀的 JavaScript 速记技巧
原文:https://medium.com/hackernoon/12-amazing-javascript-shorthand-techniques-fef16cdbc7fe

The best image about JavaScript EVER lol
更新 1:由于有许多两极分化的评论(如喜欢或讨厌这篇文章),我只想明确一点,速记有时有用,有时无用,这取决于具体情况,不要认为速记代码在任何情况下都是最好的!
我把这篇文章作为我多年来学习的速记JavaScript编码技术的重要参考来源。为了帮助你理解它是怎么回事,我已经包括了手写版本,以给出一些关于短裤的编码观点。
1.Null、未定义的空支票速记
当创建新的变量时,有时你想检查你引用的变量的值是否不为空或未定义。我认为这是 JavaScript 编码人员非常常见的检查。
手写
if (variable1 !== null || variable1 !== undefined || variable1 !== '') { let variable2 = variable1; }
速记
let variable2 = variable1 || '';
不相信我?自己测试(粘贴到 Chrome 开发工具中,点击运行):
//null value example
let variable1 = null;
let variable2 = variable1 || '';
console.log(variable2);
//output: '' (an empty string)
//undefined value example
let variable1 = undefined;
let variable2 = variable1 || '';
console.log(variable2);
//output: '' (an empty string)
//normal value example
let variable1 = 'hi there';
let variable2 = variable1 || '';
console.log(variable2);
//output: 'hi there'
2.对象数组符号速记
手写
let a = new Array(); a[0] = "myString1"; a[1] = "myString2"; a[2] = "myString3";
速记
let a = ["myString1", "myString2", "myString3"];
3.如果是真的…否则速记
如果测试为真,这是一个很好的代码节省器,否则使用三元运算符做其他事情。
手写:
let big;
if (x > 10) {
big = true;
}
else {
big = false;
}
速记:
let big = x > 10 ? true : false;
如果你依靠 JavaScript 的一些弱类型特征,这也可以实现更简洁的代码。例如,您可以将前面的代码片段简化为:
let big = (x > 10);//further nested examples
let x = 3,
big = (x > 10) ? "greater 10" : (x < 5) ? "less 5" : "between 5 and 10";
console.log(big); //"less 5"let x = 20,
big = {true: x>10, false : x< =10};
console.log(big); //"Object {true=true, false=false}"
4.声明变量速记
我认为这是国外使用最多的社区,尽管我们知道 javascript 使用提升到你的变量声明。这是一个很好的模式,在顶部和内部声明所有的变量。
手写:
let x;
let y;
let z = 3;
速记:
let x, y, z=3;
5.赋值运算符速记
赋值操作符用于给 JavaScript 变量赋值,毫无疑问,你每天都在不假思索地使用算术(不管你用什么编程语言,Java,PHP,C++本质上都是一样的原理)。
手写:
x=x+1;
minusCount = minusCount - 1;
y=y*10;
速记:
x++;
minusCount --;
y*=10;
其他简写运算符,假设 x=10,y=5,下表解释了赋值运算符:
x += y //result x=15
x -= y //result x=5
x *= y //result x=50
x /= y //result x=2
x %= y //result x=0
6.RegExp 对象速记
避免使用 RegExp 对象的示例。
手写:
var re = new RegExp("\d+(.)+\d+","igm"),
result = re.exec("padding 01234 text text 56789 padding");
console.log(result); //"01234 text text 56789"
速记:
var result = /d+(.)+d+/igm.exec("padding 01234 text text 56789 padding");
console.log(result); //"01234 text text 56789"
8.如果在场速记
这可能是微不足道的,但值得一提。在进行“if 检查”时,有时可以省略赋值操作符。
手写:
if (likeJavaScript === true)
速记:
if (likeJavaScript)
这是另一个例子。如果“c”不等于真,那就做点什么。
手写:
let c;
if ( c!= true ) {
// do something...
}
速记:
let c;
if ( !c ) {
// do something...
}
9.函数变量参数速记
对象文字速记可能需要一点时间来适应,但是经验丰富的开发人员通常更喜欢它,而不是一系列嵌套的函数和变量。你可以争论哪种技术更短,但是我喜欢使用对象文字符号作为构造函数的简单替代。
手写:
function myFunction( myString, myNumber, myObject, myArray, myBoolean ) {
// do something...
}
myFunction( "String", 1, [], {}, true );
速记(看起来很长,但只是因为我有 console.log!):
function myFunction() {
console.log( arguments.length ); // Returns 5
for ( i = 0; i < arguments.length; i++ ) {
console.log( typeof arguments[i] ); // Returns string, number, object, object, boolean
}
}
myFunction( "String", 1, [], {}, true );
10.charAt()速记
您可以使用 eval()函数来做到这一点,但是这种括号符号速记技术比求值要干净得多,您将赢得曾经嘲笑您业余编码能力的同事的称赞!
亲笔:
"myString".charAt(0);
速记:
"myString"[0]; // Returns 'm'
11.短函数调用
就像#1 一样,您可以使用三元运算符来简化基于条件的函数调用。
手写:
function x() {console.log('x')};function y() {console.log('y')};
let z = 3;
if (z == 3)
{
x();
} else
{
y();
}
速记:
function x() {console.log('x')};function y() {console.log('y')};let z = 3;
(z==3?x:y)(); // Short version!
12.十进制基数指数
你可能见过这个,它本质上是一种没有零的奇特的书写方式。1e7 本质上意味着 1 后面跟着 7 个零,它表示十进制基数(JS 解释为浮点类型)等于 10,000,000。
手写:
for (let i = 0; i < 10000; i++) {
速记:
for (let i = 0; i < 1e4; i++) {



