JavaScript函数笔记by-Lying

来源:互联网 发布:数据开发工程师 编辑:程序博客网 时间:2024/06/17 19:51

JavaScript函数笔记by-Lying

本笔记资源来自廖雪峰的官方网站

  • 定义函数的两种方式
function abs(x) {    if (x >= 0) {        return x;    } else {        return -x;    }}var abs = function (x) {    if (x >= 0) {        return x;    } else {        return -x;    }};   //要加分号
  • 可以传入任意个参数,不会影响调用;
abs(10, 'blablabla'); // 返回10abs(-9, 'haha', 'hehe', null); // 返回9abs(); // 返回NaN//此时abs(x)函数的参数x将收到undefined,计算结果为NaN。//要避免收到undefined,可以对参数进行检查function abs(x) {    if (typeof x !== 'number') {        throw 'Not a number';    }    if (x >= 0) {        return x;    } else {        return -x;    }}

arguments

  • JavaScript在函数内部有一个关键字arguments,永远指向当前函数的调用者传入的所有参数(类似array但不是array),最常用于判断传入参数的个数;

  • 可通过arguments判断,将某参数设为可选参数;

// foo(a[, b], c)// 接收2~3个参数,b是可选参数,如果只传2个参数,b默认为null:function foo(a, b, c) {    if (arguments.length === 2) {        // 实际拿到的参数是a和b,c为undefined        c = b; // 把b赋给c        b = null; // b变为默认值    }    // ...}

rest

  • ES6标准引入rest参数;

  • rest只能写在最后,前面用…标识,传入的参数先绑定前面定义的参数,多余的参数以数组形式传给变量rest;

  • 如果传入的参数没填满前面定义的参数,rest参数会接收到一个空数组(不是undefined)。

function foo(a, b, ...rest) {    console.log('a = ' + a);    console.log('b = ' + b);    console.log(rest);}foo(1, 2, 3, 4, 5);// 结果:// a = 1// b = 2// Array [ 3, 4, 5 ]foo(1);// 结果:// a = 1// b = undefined// Array []
  • JavaScript的嵌套函数中,如果内部函数定义了与外部函数重名的变量,则内部函数的变量将“屏蔽”外部函数的变量。
0 0
原创粉丝点击