javascript – 有没有一个很好的JS速记参考呢? - 代码日志

javascript – 有没有一个很好的JS速记参考呢?

我想在我的常规编码习惯中加入任何速记技术,并且在压缩代码中看到它们时也可以阅读它们。

任何人都知道一个引用页面或文档来概述技术?

编辑:我以前提到过细粒剂,现在我明白,缩小和高效的JS-打字技术是两个几乎完全不同的概念。

更新了ECMAScript 2015 (ES6)的好东西。见底部。

最常见的条件短语是:

a = a || b     // if a is falsy use b as default
a || (a = b)   // another version of assigning a default value
a = b ? c : d  // if b then c else d
a != null      // same as: (a !== null && a !== undefined) , but `a` has to be defined

用于创建对象和数组的对象字面符号:

obj = {
   prop1: 5,
   prop2: function () { ... },
   ...
}
arr = [1, 2, 3, "four", ...]

a = {}     // instead of new Object()
b = []     // instead of new Array()
c = /.../  // instead of new RegExp()

内置类型(数字,字符串,日期,布尔值)

// Increment/Decrement/Multiply/Divide
a += 5  // same as: a = a + 5
a++     // same as: a = a + 1

// Number and Date
a = 15e4        // 150000
a = ~~b         // Math.floor(b) if b is always positive
a = +new Date   // new Date().getTime()

// toString, toNumber, toBoolean
a = +"5"        // a will be the number five (toNumber)
a = "" + 5 + 6  // "56" (toString)
a = !!"exists"  // true (toBoolean)

变量声明:

var a, b, c // instead of var a; var b; var c;

字符串的字符在索引:

"some text"[1] // instead of "some text".charAt(1);

ECMAScript 2015(ES6)标准shorthands

这些是相对较新的补充,所以不要指望浏览器的广泛支持。
它们可能被现代环境(例如:较新的node.js)或通过透析器支持。当然,“旧”版本将继续工作。

箭头功能

a.map(s => s.length)                    // new
a.map(function(s) { return s.length })  // old

休息参数

// new 
function(a, b, ...args) {
  // ... use args as an array
}

// old
function f(a, b){
  var args = Array.prototype.slice.call(arguments, f.length)
  // ... use args as an array
}

默认参数值

function f(a, opts={}) { ... }                   // new
function f(a, opts) { opts = opts || {}; ... }   // old

破坏

var bag = [1, 2, 3]
var [a, b, c] = bag                     // new  
var a = bag[0], b = bag[1], c = bag[2]  // old  

对象文字内的方法定义

// new                  |        // old
var obj = {             |        var obj = {
    method() { ... }    |            method: function() { ... }
};                      |        };

对象文字内的计算属性名称

// new                               |      // old
var obj = {                          |      var obj = { 
    key1: 1,                         |          key1: 5  
    ['key' + 2]() { return 42 }      |      };
};                                   |      obj['key' + 2] = function () { return 42 } 

奖金:内置对象的新方法

// convert from array-like to real array
Array.from(document.querySelectorAll('*'))                   // new
Array.prototype.slice.call(document.querySelectorAll('*'))   // old

'crazy'.includes('az')         // new
'crazy'.indexOf('az') != -1    // old

'crazy'.startsWith('cr')       // new (there's also endsWith)
'crazy'.indexOf('az') == 0     // old

'*'.repeat(n)                  // new
Array(n+1).join('*')           // old 

奖金2:箭头功能也使自己=这个捕获不必要

// new (notice the arrow)
function Timer(){
    this.state = 0;
    setInterval(() => this.state++, 1000); // `this` properly refers to our timer
}

// old
function Timer() {
    var self = this; // needed to save a reference to capture `this`
    self.state = 0;
    setInterval(function () { self.state++ }, 1000); // used captured value in functions
}
http://stackoverflow.com/questions/3899495/is-there-a-good-js-shorthand-reference-out-there

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 有没有一个很好的JS速记参考呢?