(精华)2020年7月4日 JavaScript高级篇 ES6(函数扩展)

举报
愚公搬代码 发表于 2021/10/19 00:58:53 2021/10/19
【摘要】 函数参数的默认值 function Person(name = '张三',age=18){ this.name = name this.age = age } let person1 =...

函数参数的默认值

function Person(name = '张三',age=18){
    this.name = name
    this.age = age
}
let person1 = new Person()
console.log(person1);
// 好处
// 1 阅读代码清晰
// 2 有利于代买维护  有利于封装代码
// 注意:有默认参数声明 内部不能用let const声明
function fn(x,y="123"){
    let x = 1;
}
fn(1)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

与结构赋值结合的使用

function fn({x,y=5}){
    console.log(x);
    console.log(y);
}
fn({}) // undefined 5
fn({x:1})
fn({x:1,y:9})
function getFn([x=3,y=5]){
    console.log(x);
    console.log(y);
}
getFn([1])
function getFn([x=3,y=5] = [1]){
    console.log(x);
    console.log(y);
}
getFn()

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

参数默认值会形成单独的作用域

// 函数的参数会形成一个单独的作用域
// 等到初始结束这个作用域就会消失
function f(x,y=x){
    console.log(y);
}
f(2)
//相当于形成了一个单独的块级作用域
{
    let x = 2
    y = x
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

参数展开运算符打包

// 写一个方法计算 1,2,3相加的结果 用到for...of 循环
// 第一种方法
function add(){
    // console.log(arguments);
    // ... Array.from()
    let sum = 0
    for (let i of arguments){
        console.log(i);
        sum += i
    }
    return sum
}

console.log(add(1,2,3));
// 第二种方法 参数展开运算符打包
function add1(...values){
    console.log(values);
    let sum = 0
    for (let i of values){
        console.log(i);
        sum += i
    }
    return sum
}
console.log(add1(1,2,3));

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

函数内部严格模式的改变

// es6 函数参数指定了默认值 解构赋值 扩展运算符... 内部就不能用严格模式
// 因为我们的参数此时也会形成一个作用域 
// function get(a,b = a){
//     'use strict'
// }
// get()
// 方法一
'use strict'
function get(a,b = a){
    
}
get()
// 方法二
const doSome = (function(){
    'use strict'
    return function(a = 2){
        return 2
    }
}())

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。

原文链接:codeboy.blog.csdn.net/article/details/107131594

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。