node.js小结

1:for ... inArray的循环得到的是String而不是Number

var a = ['A', 'B', 'C'];
for (var i in a) {
    alert(i); // '0', '1', '2'
    alert(a[i]); // 'A', 'B', 'C'
}
2:

for ... in循环,arraylength属性却不包括在内。

for ... of循环则完全修复了这些问题,它只循环集合本身的元素:

3:arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数

为了获取除了已定义参数ab之外的参数,ES6标准引入了rest参数,

function foo(a, b, ...rest) {
    console.log('a = ' + a);
    console.log('b = ' + b);
    console.log(rest);
}

foo(1, 2, 3, 4, 5);
// 结果:
// a = 1
// b = 2
// Array [ 3, 4, 5 ]
4: 为了解决块级作用域,ES6引入了新的关键字 let ,用 let 替代 var 可以申明一个块级作用域的变量

ES6标准引入了新的关键字const来定义常量,constlet都具有块级作用域:

5:

由于this在箭头函数中已经按照词法作用域绑定了,所以,用call()或者apply()调用箭头函数时,无法对this进行绑定,即传入的第一个参数被忽略:

var obj = {
    birth: 1990,
    getAge: function (year) {
        var b = this.birth; // 1990
        var fn = (y) => y - this.birth; // this.birth仍是1990
        return fn.call({birth:2000}, year);
    }
};
obj.getAge(2015); // 25

你可能感兴趣的:(node.js)