ES6 函数的扩展

默认参数

  • 传统函数设置默认参数的方法

function sum (num1, num2) {
    num1 = num1 || 10;      // num1 默认值为10
    num2 = num2 || 8;       // num2 默认值为8
    console.log(num1 + num2);
}
sum(10, 10);        //20
sum();              //18
  • ES6中函数设置默认参数的方法
function person (name, age = 18) {
    console.log(name + '---' + age);
}
person('cez', 21);      //cez---21
person('cez', '');      //cez---   (第二个参数为空)
person('zlz');          //zlz---18 (没传递第二个参数,所以使用默认参数)

注意事项

  • 使用函数默认参数时,不允许有同名参数。

//不报错
function person (name, name) {
    console.log(name);
}
person('cezlz')             //undefined
person('cezlz', 21);        //21

//报错:Duplicate parameter name not allowed in this context (此上下文中不允许有重复的参数名)
function person (name, name, age=18) {
    console.log(name);
}
  • 只有在未传递参数,或者参数为 undefined 时,才会使用默认参数,null 值被认为是有效的值传递。
function person (name, age = 18) {
    console.log(name + '---' + age);
}
person('cez', 21);      //cez---21
person('cez', '');      //cez---   (第二个参数为null,认为有效)
person('zlz');          //zlz---18 (没传递第二个参数,所以使用默认参数)
  • 函数参数默认值存在暂时性死区,在函数参数默认值表达式中,还未初始化赋值的参数值无法作为其他参数的默认值。

function a (x, y = x) {
    console.log(x, y);
}
a(1);       //1 1
a()         //undefined undefined

function a (x = y) {
    console.log(x);
}
a(1);       //1
a();        //报错:y is not defined

function t (x = y, y) {
    console.log(x, y);
}
t();               //报错:Cannot access 'y' before initialization (初始化前无法访问“y”)
t(1);              //1 undefined

不定参数(延展操作符)

不定参数用来表示不确定参数个数,形如,...变量名,由...加上一个具名参数标识符组成。具名参数只能放在参数组的最后,并且有且只有一个不定参数

求数值类型的参数之和:
function sum (name, ...arg) {
    let result = 0;
    console.log(name);              //cezlz
    for (let value of arg) {
        result += value;
    }
    return result;
}
console.log(sum('cezlz', 1, 10, 3));         //14
console.log(sum('cezlz', 1, 10, 20, 30));    //61

传统函数求参数之和:
function sum () {
    let result = 0;
    for (let value of arguments) {
        result += value;
    }
    return result;
}
console.log(sum(1, 2, 3));          //6

 

 

请多多指教^__^

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ES6 引入了一些数值扩展,其中包括了新的数值类型(如二进制和八进制)、新的数学方法和常量。 1. 二进制和八进制 在 ES6 中,我们可以使用 `0b` 或 `0B` 前缀来表示二进制数,使用 `0o` 或 `0O` 前缀来表示八进制数。例如: ```javascript let binary = 0b1010; // 二进制的 10 let octal = 0o777; // 八进制的 511 ``` 2. Number.isFinite() `Number.isFinite()` 方法用于检查一个数值是否为有限数。与全局的 `isFinite()` 函数不同的是,`Number.isFinite()` 不会将非数值转换为数值。例如: ```javascript Number.isFinite(Infinity); // false Number.isFinite(-Infinity); // false Number.isFinite(NaN); // false Number.isFinite(123); // true ``` 3. Number.isNaN() `Number.isNaN()` 方法用于检查一个数值是否为 NaN。与全局的 `isNaN()` 函数不同的是,`Number.isNaN()` 只有在参数是数值且等于 NaN 时才返回 true。例如: ```javascript Number.isNaN(NaN); // true Number.isNaN('hello'); // false Number.isNaN(123); // false ``` 4. Number.parseInt() `Number.parseInt()` 是 `parseInt()` 的一个新的方法,它将字符串转换为整数,并且只接受数字作为字符串的参数。例如: ```javascript Number.parseInt('123'); // 123 Number.parseInt('123.45'); // 123 Number.parseInt('hello'); // NaN ``` 5. Number.parseFloat() `Number.parseFloat()` 是 `parseFloat()` 的一个新的方法,它将字符串转换为浮点数,并且只接受数字作为字符串的参数。例如: ```javascript Number.parseFloat('3.14'); // 3.14 Number.parseFloat('3.14hello'); // 3.14 Number.parseFloat('hello'); // NaN ``` 6. Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER `Number.MAX_SAFE_INTEGER` 和 `Number.MIN_SAFE_INTEGER` 属性分别表示 JavaScript 中最大的安全整数和最小的安全整数。例如: ```javascript Number.MAX_SAFE_INTEGER; // 9007199254740991 Number.MIN_SAFE_INTEGER; // -9007199254740991 ``` 7. Number.isSafeInteger() `Number.isSafeInteger()` 方法用于检查一个数值是否为安全整数。安全整数是指符合以下两个条件的整数: - 在 JavaScript 中能够精确表示。 - 绝对值不大于 `Number.MAX_SAFE_INTEGER`。 例如: ```javascript Number.isSafeInteger(123); // true Number.isSafeInteger(9007199254740992); // false,超出了安全整数范围 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值