javascript - 函数定义中参数周围的方括号

标签 javascript ember.js ember-cli

我在 the Ember CLI website 中遇到了以下代码:

export default Ember.Helper.helper(function([value]) {
  return value.toUpperCase();
});

让我感到困惑的是 value 参数周围的方括号。我可以在函数调用中理解它,但为什么在函数定义中?

最佳答案

这是一个 destructuring assignment . @recursive 描述的行为是正确的,但了解它不限于第一个元素可能会有所帮助。如果它是用三个元素编写的:

函数 xyz([a, b, c]){...}

然后 a、b 和 c 都将被声明为函数范围内可用的变量,在这种情况下,它们将等于数组的前 三个 元素。此外 - 如果作为参数传递的数组没有至少三个元素,则参数中指定的其余元素(a、b 和 c)将存在,但将具有undefined 的值:

// Example
function destructureThis([a, b, c]){
  console.log(a, b, c);
}

var shortArray = [1, 25];
destructureThis(shortArray);

// Prints to console:
// 1 25 undefined

同样,如果参数数组较大,则如前所述,其他元素将被忽略。

var longerArray = [1, 5, 9, 50, 60];
destructureThis(longerArray);

// Prints to console:
// 1 5 9

另外...这是对 ECMAScript 规范的最新补充,如果不使用 Babel 或等效的转换它以实现向后兼容性,它应该在所有目标环境(看着你的 IE)中进行测试。

关于javascript - 函数定义中参数周围的方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37691490/

相关文章:

ember.js - Ember Power Select - 标签/值

javascript - 如何在单元测试中将商店注入(inject) Ember.Service?

sockets - Ember 2,验收测试,Websocket挂起,然后Then()等待挂起

javascript - 创建购物 list Web 应用程序

php - 带导航的简单幻灯片

javascript - 通过 iframe 进行响应式设计

javascript - Ember 在服务的数组对象中设置值

javascript - 如何使用 EMBER.SORTABLEMIXIN?

javascript - 使用 knockoutjs 获取行的总和并添加和删除行

使用 Emberfire 和 Torii 进行 Firebase 3 身份验证