标签: arrow-functions

ECMAScript 6返回对象的箭头函数

当从箭头函数返回一个对象时,由于语法的模糊性,似乎有必要使用额外的一组{}和一个return关键字.

这意味着我不能写p => {foo: "bar"},但必须写p => { return {foo: "bar"}; }.

如果箭头函数返回除对象以外的任何内容{},return则不需要,例如:p => "foo".

p => {foo: "bar"}回报undefined.

修改后的p => {"foo": "bar"}抛出" SyntaxError:意外标记:' :'".

有什么明显的东西我不见了吗?

javascript ecmascript-6 arrow-functions

581
推荐指数
4
解决办法
9万
查看次数

箭头函数与函数声明/表达式:它们是等效/可交换的吗?

规范问题如果在用箭头函数替换函数声明/表达式后发现有关问题的问题,请将其作为此副本的副本关闭.

ES2015中的箭头功能提供了更简洁的语法.我现在可以用箭头功能替换所有函数声明/表达式吗?我需要注意什么?

例子:

构造函数

function User(name) {
  this.name = name;
}

// vs

const User = name => {
  this.name = name;
};
Run Code Online (Sandbox Code Playgroud)

原型方法

User.prototype.getName = function() {
  return this.name;
};

// vs

User.prototype.getName = () => this.name;
Run Code Online (Sandbox Code Playgroud)

对象(文字)方法

const obj = {
  getName: function() {
    // ...
  }
};

// vs

const obj = {
  getName: () => {
    // ...
  }
};
Run Code Online (Sandbox Code Playgroud)

回调

setTimeout(function() {
  // ...
}, 500);

// vs

setTimeout(() => {
  // ...
}, …
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 arrow-functions

449
推荐指数
2
解决办法
12万
查看次数

JavaScript中"=>"(由等于和大于等形成的箭头)的含义是什么?

我知道>=运算符意味着大于或等于,但我=>在一些源代码中看到过.那个运营商的意义是什么?

这是代码:

promiseTargetFile(fpParams, aSkipPrompt, relatedURI).then(aDialogAccepted => {
    if (!aDialogAccepted)
        return;

    saveAsType = fpParams.saveAsType;
    file = fpParams.file;

    continueSave();
}).then(null, Components.utils.reportError);
Run Code Online (Sandbox Code Playgroud)

javascript syntax ecmascript-6 arrow-functions

424
推荐指数
10
解决办法
21万
查看次数

多个箭头函数在javascript中意味着什么?

我一直在阅读一堆react代码,我看到这样的东西,我不明白:

handleChange = field => e => {
  e.preventDefault();
  /// Do something here
}
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 arrow-functions

401
推荐指数
6
解决办法
7万
查看次数

异步箭头功能的语法

我可以用async关键字将javascript函数标记为"async"(即返回一个promise).像这样:

async function foo() {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

箭头函数的等效语法是什么?

javascript promise async-await arrow-functions

393
推荐指数
9
解决办法
16万
查看次数

我什么时候应该在ECMAScript 6中使用箭头功能?

这个问题针对的是那些在即将到来的ECMAScript 6(Harmony)背景下已经考虑过代码风格并且已经使用过该语言的人.

有了() => {}function () {}我们有两种非常相似的方法来编写ES6中的函数.在其他语言中,lambda函数通常通过匿名来区分自己,但在ECMAScript中,任何函数都可以是匿名的.这两种类型中的每一种都具有唯一的使用域(即,当this需要明确地绑定或明确地不绑定时).在这些域之间存在大量的情况,其中任何一种符号都可以.

ES6中的箭头功能至少有两个限制:

  • 不要工作 new
  • 固定this在初始化时限制范围

抛开这两个限制,箭头函数理论上几乎可以在任何地方替换常规函数.在实践中使用它们的正确方法是什么?是否应使用箭头功能,例如:

  • "他们工作的每个地方",即在任何地方,函数不必对this变量不可知,我们不创建对象.
  • 只有"需要的任何地方",即事件监听器,超时,需要绑定到某个范围
  • 具有'短'功能但不具有'长'功能
  • 仅适用于不包含其他箭头功能的功能

我正在寻找的是在ECMAScript的未来版本中选择适当的函数符号的指南.该指南需要明确,以便可以向团队中的开发人员讲授,并保持一致,这样就不需要从一个函数符号到另一个函数符号进行不断的重构.

javascript lambda ecmascript-harmony ecmascript-6 arrow-functions

379
推荐指数
6
解决办法
8万
查看次数

我可以在生成器中使用ES6的箭头函数语法吗?(箭头符号)

即我该如何表达:

function *(next) {}
Run Code Online (Sandbox Code Playgroud)

带箭头.我已经尝试了所有我能想到的组合,而且我找不到任何关于它的文档.

(目前使用节点v0.11.14)

javascript generator ecmascript-6 arrow-functions

209
推荐指数
5
解决办法
5万
查看次数

如何在ES2015中编写命名箭头功能?

我有一个函数,我试图转换为ES6中的新箭头语法.它是一个命名函数:

function sayHello(name) {
    console.log(name + ' says hello');
}
Run Code Online (Sandbox Code Playgroud)

有没有办法给它一个没有var语句的名字:

var sayHello = (name) => {
    console.log(name + ' says hello');
}
Run Code Online (Sandbox Code Playgroud)

显然,我只能在定义之后使用此功能.如下:

sayHello = (name) => {
        console.log(name + ' says hello');
    }
Run Code Online (Sandbox Code Playgroud)

ES6中有新的方法吗?

javascript ecmascript-6 arrow-functions

192
推荐指数
3
解决办法
7万
查看次数

我什么时候应该在es6箭头函数中使用`return`?

新的es6箭头函数return在某些情况下是隐含的:

表达式也是该函数的隐式返回值.

在什么情况下我需要使用returnes6箭头功能?

javascript return function ecmascript-6 arrow-functions

138
推荐指数
5
解决办法
5万
查看次数

ES6立即调用了箭头功能

为什么这在Node.js控制台中运行(在4.1.1和5.3.0中测试)但在浏览器中不起作用(在Chrome中测试)?此代码块应创建并调用记录的匿名函数Ok.

() => {
  console.log('Ok');
}()
Run Code Online (Sandbox Code Playgroud)

此外,虽然上述工作在Node中,但这不起作用:

n => {
  console.log('Ok');
}()
Run Code Online (Sandbox Code Playgroud)

这不是:

(n) => {
  console.log('Ok');
}()
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当添加参数时,它实际上会SyntaxError在立即调用的部分抛出一个.

javascript node.js arrow-functions

134
推荐指数
2
解决办法
5万
查看次数