标签:sel null wiki lte awb number pre form filter
利用filter
,可以巧妙地去除Array
的重复元素:
r = arr.filter(function (element, index, self) {
return self.indexOf(element) === index;
});
高阶函数reduce类似于递归,斐波那契:
var arr = [1, 3, 5, 7, 9]; arr.reduce(function (x, y) { return x + y; }); // 25
总的来说,map的操作是针对于每个单个参数,而reduce是操作前两个参数,然后结果与第三个参数进行操作。。。
在JS中函数的参数可以是另一个函数,因为函数可以赋值给变量,变量可以作为参数【机智】;
Map()作为高阶函数,参数可以计算,转化等功能的;
相当于是java里的重写吧:
var count = 0;
var oldParseInt = parseInt; // 保存原函数
window.parseInt = function () {
count += 1;
return oldParseInt.apply(null, arguments); // 调用原函数
};
// 测试:
parseInt(‘10‘);
parseInt(‘20‘);
parseInt(‘30‘);
count; // 3
块级作用域let,替代var可以声明一个块级作用域的变量,const定义常量;
在函数中JS会自动提升变量的声明到函数最开始,而赋值则不会提升。
‘use strict‘;
function foo() {
var x = ‘Hello, ‘ + y;
alert(x);
var y = ‘Bob‘;
}
foo();
对于上述foo()
函数,JavaScript引擎看到的代码相当于:
function foo() {
var y; // 提升变量y的申明
var x = ‘Hello, ‘ + y;
alert(x);
y = ‘Bob‘;
}
虽然是strict模式,但语句var x = ‘Hello, ‘ + y;
并不报错,原因是变量y
在稍后申明了。但是alert
显示Hello, undefined
,说明变量y
的值为undefined
。这正是因为JavaScript引擎自动提升了变量y
的声明,但不会提升变量y
的赋值。
获得所有输入的参数,arguments,类似于Array,arguments.length === 0;
传入的参数多余已定义的参数,其余的参数会一数组的形式参入到rest中;
检查参数:
function abs(x) {
if (typeof x !== ‘number‘) {
throw ‘Not a number‘;
}
if (x >= 0) {
return x;
} else {
return -x;
}
}
匿名函数:
var abs = function (x) {
if (x >= 0) {
return x;
} else {
return -x;
}
};//这里有一个非常不起眼的分号哟!因为他是变量名嘛。。。
正常函数:
function abs(x) { if (x >= 0) { return x; } else { return -x; } }
标签:sel null wiki lte awb number pre form filter
原文地址:http://www.cnblogs.com/ooOO00/p/6435502.html