码迷,mamicode.com
首页 > Web开发 > 详细

JS函数

时间:2017-02-24 10:42:23      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:sel   null   wiki   lte   awb   number   pre   form   filter   

 

利用filter,可以巧妙地去除Array的重复元素:

‘use strict‘;

var
    r,
    arr = [‘apple‘, ‘strawberry‘, ‘banana‘, ‘pear‘, ‘apple‘, ‘orange‘, ‘orange‘, ‘strawberry‘];

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;
    }
}

JS函数

标签:sel   null   wiki   lte   awb   number   pre   form   filter   

原文地址:http://www.cnblogs.com/ooOO00/p/6435502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!