zoukankan      html  css  js  c++  java
  • 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;
        }
    }

  • 相关阅读:
    未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包
    Only one instance of a ScriptManager can be added to the page.
    springboot SSM
    spring mvc 请求转发和重定向
    Spring Boot 配置 Swagger2 接口文档引擎
    solr
    jQuery
    反向代理负载均衡-Nginx
    mybatis二级缓存
    Vue的路由
  • 原文地址:https://www.cnblogs.com/ooOO00/p/6435502.html
Copyright © 2011-2022 走看看