箭头函数中的默认参数值

12
我刚开始学习 ES6 的 Javascript,正在探索它。我喜欢 ES6 中的箭头函数和默认参数特性,这在下面的网站中提到。 http://es6-features.org/#ExpressionBodies http://es6-features.org/#DefaultParameterValues 以下是我的 ES6 代码片段,我已经在 Chrome 47 浏览器中测试过了。我试图为我的箭头函数设置默认参数值,但目前出现错误。
<script type="text/javascript">
  'use strict';
  var greet = (name = 'Venkat') => (console.log('Hi ' + name + '!'));
  greet(); // expected output: Venkat
  greet('Venkatraman'); // expected output: Venkatraman
</script>

请告诉我是否可能,如果可能,请解释一下解决方案以及我在这里做错了什么。


1
Chrome 47 尚未支持默认参数(48 版本则是通过实验性标志位开启)。你的代码是有效的 ES6,所以 Babel 可以正常工作。 - CodingIntrigue
提供简单的BabelJS设置以转换此代码。 - user5327940
3个回答

10
不,目前还不可能(我猜)。但您可以做到以下几点:
var greet = name => console.log('Hi ' + (name || 'Venkat') + '!');
greet(); // output: Venkat
greet('Venkatraman'); // output: Venkatraman

在这里尝试一下。

[2018年1月] 我认为默认参数值现在被所有主要浏览器支持了。


谢谢你的解决方案。如果函数内有4个变量会怎样呢?这将增加更多的代码行数。 - user5327940
是的,我们将不得不忍受它,直到有完全支持默认参数值的功能。 - KooiInc

1

是的,你说得对。我测试了代码,它可以正常工作!我的计划是学习并实现适用于浏览器的段落以解决上述问题! - user5327940

0

从今天的观点来看,这确实是可能的 - 我不知道过去是否也是如此。

语法如下:

const arrowfunctionidentifier = (parameter = defaultValue) => {<content of the function>}

我是说它基本上和你的一样,只是在函数体中使用了花括号。也许这就是关键的区别吧?
祝好!
编辑:我添加了一个小片段,用于测试目的 :)

const greeting = (user = 'stranger') => {
  console.log(`Greetings! ${user}`);
};

greeting();
greeting('mwannags');


请参阅问题的第一个评论 - 是的,问题是在2015年时尚未在所有环境中实施。 - Bergi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接