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

    技术2026-04-02  8

    函数参数的默认值

    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)

    与结构赋值结合的使用

    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()

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

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

    参数展开运算符打包

    // 写一个方法计算 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));

    函数内部严格模式的改变

    // 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 } }())
    Processed: 0.010, SQL: 9