zoukankan      html  css  js  c++  java
  • 廖雪峰js教程笔记 1

    遍历Array可以采用下标循环,遍历MapSet就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,ArrayMapSet都属于iterable类型。

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

    然而,更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。以Array为例:

    var a = ['A', 'B', 'C'];
    a.forEach(function (element, index, array) {
        // element: 指向当前元素的值
        // index: 指向当前索引
        // array: 指向Array对象本身
        alert(element);
    });
    

    注意forEach()方法是ES5.1标准引入的,你需要测试浏览器是否支持。

    SetArray类似,但Set没有索引,因此回调函数的前两个参数都是元素本身:

    var s = new Set(['A', 'B', 'C']);
    s.forEach(function (element, sameElement, set) {
        alert(element);
    });
    

    Map的回调函数参数依次为valuekeymap本身:

    var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
    m.forEach(function (value, key, map) {
        alert(value);
    });
    

    如果对某些参数不感兴趣,由于JavaScript的函数调用不要求参数必须一致,因此可以忽略它们。例如,只需要获得Arrayelement

    var a = ['A', 'B', 'C']; a.forEach(function (element) { alert(element); });

    定义函数

    在JavaScript中,定义函数的方式如下:

    function abs(x) {
        if (x >= 0) {
            return x;
        } else {
            return -x;
        }
    }

    上述abs()函数的定义如下:

    
    
    • function指出这是一个函数定义;
    • abs是函数的名称;
    • (x)括号内列出函数的参数,多个参数以,分隔;
    • { ... }之间的代码是函数体,可以包含若干语句,甚至可以没有任何语句。
    
    

    请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

     
    如果没有return语句,函数执行完毕后也会返回结果,只是结果为undefined

    由于JavaScript的函数也是一个对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以视为指向该函数的变量。

    因此,第二种定义函数的方式如下

        }
    };
    

    在这种方式下,function (x) { ... }是一个匿名函数,它没有函数名。但是,这个匿名函数赋值给了变量abs,所以,通过变量abs就可以调用该函数。

    上述两种定义完全等价,注意第二种方式按照完整语法需要在函数体末尾加一个;,表示赋值语句结束。

     

    调用函数

    
    

    调用函数时,按顺序传入参数即可:

    
    
    abs(10); // 返回10
    abs(-9); // 返回9
    
    
    

    由于JavaScript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数:

    
    
    abs(10, 'blablabla'); // 返回10
    abs(-9, 'haha', 'hehe', null); // 返回9
    
    
    

    传入的参数比定义的少也没有问题:

    
    
    abs(); // 返回NaN
    
    
    

    此时abs(x)函数的参数x将收到undefined,计算结果为NaN

    
    

    要避免收到undefined,可以对参数进行检查:



  • 相关阅读:
    Darknet 安装
    Spring.Net封闭业务类为WebService注意点和问题
    NHibernate删除数据时遇到deleted object would be re-saved by cascade级联问题
    【不遮遮掩掩】Github上传本地代码以及常见问题解决方案
    Android分享内容和接收分享内容小小实现
    Android v7包下Toolbar和ActionBarActivity实现后退导航效果
    Android MediaPlayer setDataSource failed
    Java入门-类HelloWorld是公共的,应在名为HelloWorld.java的文件中声明
    C#导出Excel文件Firefox中文件名乱码
    【转】如何用css限制文字长度,使溢出的内容用省略号…显示
  • 原文地址:https://www.cnblogs.com/jiangyi666/p/5948369.html
Copyright © 2011-2022 走看看