js语法重点

1:最新的ES6规范引入了新的数据类型Map;var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);m.get('Michael'); // 95

2:设置超出一行后用...来表示剩余内容

.myls-1 {
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
}
3:遍历Array可以采用下标循环,遍历MapSet就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,ArrayMapSet都属于iterable类型。

具有iterable类型的集合可以通过新的for ... of循环来遍历。

for ... of循环是ES6引入的新的语法,请测试你的浏览器是否支持:

4 :匿名函数

var abs = function (x) {
    if (x >= 0) {
        return x;
    } else {
        return -x;
    }
};可以通过abs来调用
5:JavaScript还有一个免费赠送的关键字arguments,它只在函数内部起作用,并且永远指向当前函数的调用者传入的所有参数。arguments类似Array但它不是一个Array
function abs() {
    if (arguments.length === 0) {
        return 0;
    }
    var x = arguments[0];
    return x >= 0 ? x : -x;
}实际上arguments最常用于判断传入参数的个数。
function foo(a, b, ...rest) {
    console.log('a = ' + a);
    console.log('b = ' + b);
    console.log(rest);
}rest可以获取多传的参数
6:JavaScript引擎在行末自动添加分号的机制
7:
绑定到对象上的函数称为方法,和普通函数也没啥区别,但是它在内部使用了一个this关键字,这个东东是什么?在一个方法内部,this是一个特殊变量,它始终指向当前对象
var xiaoming = {
    name: '小明',
    birth: 1990,
    age: function () {
        var y = new Date().getFullYear();
        return y - this.birth;
    }
};
xiaoming.age();
8:高阶函数英文叫Higher-order function。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数
9:
function pow(x) {
    return x * x;
}
ar arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(pow);map会遍历所有的元素。通过pow();最后返回一个新的数组

再看reduce的用法。Array的reduce()把一个函数作用在这个Array[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算
var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
    return x + y;
});
10:filter:filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。map()类似,Arrayfilter()也接收一个函数。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。最后返回一个数组
var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
    return x % 2 !== 0;
});
r; // [1, 5, 9, 15]
11:sort,arry的sort方法排序字符串会根据ASCII码进行排序,而小写字母a的ASCII码在大写字母之后;默认把所有元素先转换为String再排序。对于两个元素xy,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1
12:闭包:
函数作为返回值。例子:
function sum(arr) {
    return arr.reduce(function (x, y) {
        return x + y;
    });
}

sum([1, 2, 3, 4, 5]); // 15
var f = lazy_sum([1, 2, 3, 4, 5]); // function sum()(返回的只是里面的sunm())
f();返回累加的结果

 

 
原文地址:https://www.cnblogs.com/dragonh/p/6257406.html