JS函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS函数相关的知识,希望对你有一定的参考价值。

 

利用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函数的主要内容,如果未能解决你的问题,请参考以下文章

几个关于js数组方法reduce的经典片段

web代码片段

JS常用代码片段-127个常用罗列-值得收藏

ES7-Es8 js代码片段

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

VSCode自定义代码片段——JS中的面向对象编程