ES6新特性:函数优化(传参、箭头函数、简写)

简介: ES6新特性:函数优化(传参、箭头函数、简写)

说明


函数优化(传参)


在es5中如果函数需要传入两个参,而我们只想传入一个,是如下处理的


function add(a, b) {
  //判断b是否为空,为空就给默认值1
  if (!b) {
    b = 1;
  }
  return a + b;
}
function add2(a, b) {
  //判断b是否为空,为空就给默认值1
  b = b || 1;
  return a + b;
  return a + b;
}
console.log(add(10));     // 输出11
console.log(add(10, 2));  // 输出12(传入两个参数时,默认值就会被覆盖掉) 
console.log(add2(10));    // 输出11
console.log(add2(10, 3));   // 输出13(传入两个参数时,默认值就会被覆盖掉) 


es6中可以如下处理


function add3(a, b = 1) {
  return a + b;
}
console.log(add3(10));    // 输出11
console.log(add3(10, 4));   // 输出14(传入两个参数时,默认值就会被覆盖掉)


函数优化(箭头函数)


es5中


function print(a) {
  console.log(a);
}
print("123"); // 输出123


es6中


let print2 = a => console.log(a);
print2("123"); //输出123


通过上面两个例子,我们可以发现在ES6中,函数优化为箭头函数的格式为:


let 函数名=参数=>函数体


那么如果当函数有多个参数,函数方法体有多条语句,没有参数时又如何处理呢?


如下:


let sum = (a, b) => console.log(a + b);
console.log(sum(10, 10));   // 输出20
let sum2 = (a, b) => {
  return a + b
}
console.log(sum2(10, 10));  // 输出20
let print3 = () => console.log("No Argument");
console.log(print3());    // 输出No Argument



函数优化(函数属性的简写)


在ES6中,也增加了对 对象的函数属性的简写


let person = {
  name: "jack",
  // 传统函数属性写法
  eat: function(food) {
    console.log(this.name + "在吃" + food);
  },
  // es6箭头函数
  eat2: food => console.log(this.name + "在吃" + food),
  eat3: food => console.log(person.name + "在吃" + food),
  // es6简化写法
  eat4(food) {
    console.log(person.name + "在吃" + food)
  }
}
person.eat("西瓜");     // 输出: jack在吃西瓜
person.eat2("迷糊桃");   // 输出: ??在吃迷糊桃  这里拿不到name是因为存在this指向的问题 
person.eat3("迷糊桃"); // 输出: jack在吃迷糊桃
person.eat4("迷糊桃");   // 输出: jack在吃迷糊桃



实例


函数属性,箭头函数,和解构表达式结合使用



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 给参数b设置默认值,不传该值则使用默认值
        function add(a, b=1) {
            return a + b;
        }
        console.log(add(10));
        // 不定参数
        function multipleParams(...values) {
            console.log('不定参 参数个数:'+values.length);
        }
        multipleParams(1);
        multipleParams(1,2,3);
        // 箭头函数
        var print = obj => console.log(obj);
        print("hello");
        var sum = (a,b) => a+b;
        console.log(sum(55,2));
        const person = {
            name: 'jack',
            age: 21,
            language: ['java','js','css']
        };
        var hello = obj => console.log('hello, '+obj.name);
        hello(person);
        // 箭头函数+解构表达式:传参时传入一个对象,在函数中可以获取对象的属性
        var hello2 = ({name}) => console.log('hello2, '+name);
    var hello3 = ({name,age}) => console.log('hello3, '+name+' '+age);
        hello2(person);
    hello3(person);
    </script>
</body>
</html>


相关文章
|
26天前
|
自然语言处理
ES6 中箭头函数和普通函数区别
【10月更文挑战第19天】这些仅是对箭头函数和普通函数区别的一些主要方面进行的详细阐述,实际应用中可能还会有更多具体的细节和情况需要进一步探讨和理解。可以根据自己的需求进一步深入研究和实践,以更好地掌握它们在不同场景下的应用。
32 2
|
2月前
|
JavaScript 前端开发
ES6+ 特性,箭头函数、解构赋值、模块导入
ES6+ 特性,箭头函数、解构赋值、模块导入
ES6学习(4)箭头函数
ES6学习(4)箭头函数
|
6月前
在ES6中,箭头函数可以像传统函数一样使用`this`吗?
在ES6中,箭头函数可以像传统函数一样使用`this`吗?
32 1
|
6月前
|
网络架构
ES6箭头函数的特性
ES6箭头函数的特性
|
6月前
|
JavaScript 前端开发 网络架构
JavaScript开发中ES6+新特性:解释箭头函数的作用以及它与普通函数的区别。
JavaScript开发中ES6+新特性:解释箭头函数的作用以及它与普通函数的区别。
72 1
|
6月前
|
自然语言处理 前端开发 安全
【面试题】ES6语法五之箭头函数
【面试题】ES6语法五之箭头函数
|
6月前
|
JavaScript 前端开发
请解释JavaScript中的箭头函数,并给出一个使用箭头函数的例子。
请解释JavaScript中的箭头函数,并给出一个使用箭头函数的例子。
56 0
|
自然语言处理 JavaScript
ES6中的箭头函数及其使用场景
ES6 (ECMAScript 2015) 引入了许多新特性,其中之一就是箭头函数。箭头函数是一种更加简洁和便捷的函数定义方式,本文将详细介绍 ES6 中的箭头函数,并探讨其适用场景及注意事项。
130 0
下一篇
无影云桌面