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

Posted 流楚丶格念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>

以上是关于ES6新特性:函数优化(传参箭头函数简写)的主要内容,如果未能解决你的问题,请参考以下文章

ES6新特性:对象优化

ES6新特性箭头函数语法以及与ES5普通函数的不同

ECMAScript 6.0

ES6新特性一览

ES6的新特性

ES6的新特性