标签: arrow-functions

如何从javascript中的一个线性箭头函数返回匿名对象?

我最近切换到es6并开始在我的代码中使用箭头函数.在重构时我遇到了代码

data.map(function(d) {
   return {id: d.id, selected: bool};
});
Run Code Online (Sandbox Code Playgroud)

我将上面的代码改为此 -

data.map((d) => {id: d.id, selected: bool});
Run Code Online (Sandbox Code Playgroud)

但是我从上面的代码中得到了错误.我不知道这里有什么问题?我知道如果没有代码块,则会有箭头函数提供的隐式返回.

但是不知道如何返回空对象或匿名对象,并初始化了一些属性?

编辑:

如果我这样做会有什么问题?只是出于好奇的缘故.

data.map((d) => new {id: d.id, selected: bool});
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 arrow-functions

37
推荐指数
1
解决办法
9851
查看次数

如何递归地在ES6中编写箭头函数?

ES6中的箭头函数没有arguments属性,因此arguments.callee无法工作,即使只使用匿名函数也无法在严格模式下工作.

箭头函数无法命名,因此无法使用命名的函数表达式技巧.

那么......如何编写递归箭头函数?这是一个箭头函数,根据某些条件递归调用自身等等当然?

javascript recursion ecmascript-6 arrow-functions

36
推荐指数
7
解决办法
1万
查看次数

使用JavaScript ES6箭头功能的即时功能

有谁知道如何使用ES6箭头语法编写立即函数?

这是ES3/5的做法:

(function () {
   //...
}());
Run Code Online (Sandbox Code Playgroud)

我尝试了以下但unexpected token在最后一行得到错误.

(() => {
  //...
}());
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下:http://www.es6fiddle.net/hsb8bgu4/

javascript function ecmascript-harmony ecmascript-6 arrow-functions

35
推荐指数
2
解决办法
1万
查看次数

在React中正确使用箭头函数

我正在使用ReactJS与Babel和Webpack以及使用ES6以及箭头函数的建议类字段.我理解箭头函数通过不重新创建每个渲染的函数来使事情更有效,类似于构造函数中的绑定方式.但是,如果我正确使用它们,我并不是100%确定.以下是我的代码在三个不同文件中的简化部分.

我的代码:

Main.js

prevItem = () => {
    console.log("Div is clicked")
}

render(){
    return (
         <SecondClass prevItem={this.prevItem} />
    )
}
Run Code Online (Sandbox Code Playgroud)

SecondClass.js

<ThirdClass type="prev" onClick={()=>this.props.prevItem()} />
Run Code Online (Sandbox Code Playgroud)

ThirdClass.js

<div onClick={()=>{this.props.onClick()}}>Previous</div>
Run Code Online (Sandbox Code Playgroud)

题:

上面的代码是否正确使用箭头功能?我注意到对于SecondClass.js我也可以使用:

<ThirdClass type="prev" onClick={this.props.prevItem} />
Run Code Online (Sandbox Code Playgroud)

由于我在原始函数定义中使用了ES6箭头函数,因此一种方法或另一种方法之间是否存在差异?或者我应该一直使用箭头语法直到我的最后一个div?

javascript ecmascript-6 reactjs arrow-functions ecmascript-next

34
推荐指数
4
解决办法
3万
查看次数

CoffeeScript:如何使用胖箭头和这个?

我有一个coffeescript类,它有一些jquery事件监听器.我想使用胖箭=>来避免引用类,但我仍然需要引用通常会使用的元素this.我怎么能同时使用?

class PostForm
    constructor: ->
        $('ul.tabs li').on 'click', =>
            tab = $(this)
            @highlight_tab(tab)
            @set_post_type(tab.attr('data-id'))

    highlight_tab: (tab)->
        tab.addClass 'active'

    set_post_type: (id) ->
        $('#post_type_id').val(id)
Run Code Online (Sandbox Code Playgroud)

this coffeescript arrow-functions

33
推荐指数
2
解决办法
6221
查看次数

ES6箭头函数是否有自己的参数?

我不知道箭头函数是否绑定arguments到词法范围.

看一下这个例子(可以使用相同的概念this):

var b = function() { return () => console.log(arguments); };
b(1,2,3)(4,5,6); // different result of chrome vs FF.
Run Code Online (Sandbox Code Playgroud)

当我在Chrome上运行时,我得到了[1,2,3],但在Firefox上,我得到了[4,5,6].这是怎么回事?

javascript ecmascript-6 arrow-functions

31
推荐指数
2
解决办法
2780
查看次数

为什么ES6箭头函数中的`throw`无效?

我只是想找出为什么这是无效的原因:

() => throw 42;
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过以下方式绕过它:

() => {throw 42};
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 arrow-functions

27
推荐指数
2
解决办法
3077
查看次数

即使他们不使用ES6箭头功能仍然关闭"this"吗?

我试图理解何时this在ES6箭头函数中进行词法绑定的规则.我们先来看看这个:

function Foo(other) {
    other.callback = () => { this.bar(); };

    this.bar = function() {
        console.log('bar called');
    };
}
Run Code Online (Sandbox Code Playgroud)

当我构造a时new Foo(other),在另一个对象上设置回调.回调是一个箭头函数,并且this箭头函数在词法上绑定到Foo实例,因此Foo即使我没有保留对Foo周围的任何其他引用,也不会进行垃圾回收.

如果我这样做会怎么样?

function Foo(other) {
    other.callback = () => { };
}
Run Code Online (Sandbox Code Playgroud)

现在我将回调设置为nop,我从不提及this它.我的问题是:箭头功能是否仍然是词法绑定this,Foo只要活着就保持other活着,或者Foo在这种情况下可能是垃圾收集?

javascript ecmascript-6 arrow-functions

25
推荐指数
1
解决办法
1242
查看次数

在为类方法使用胖箭头语法时,我可以使用TypeScript重载吗?

我已经从传统形式转换了一些类:

class TestOverloads {
    private status = "blah";
    public doStuff(selector: JQuery);
    public doStuff(selector: string);
    public doStuff(selector: any) {
        alert(this.status);
    }
}
Run Code Online (Sandbox Code Playgroud)

改为使用箭头函数表达式:

class TestOverloads2 {
    private status = "blah";
    public doStuff = (selector: any) => {
        alert(this.status);
    }
}
Run Code Online (Sandbox Code Playgroud)

以便在回调中使用类方法时避免使用作用域问题(请参阅此处了解背景信息).

我无法弄清楚如何重新创建我的重载函数签名.使用胖箭时如何编写重载?

typescript arrow-functions

24
推荐指数
1
解决办法
3724
查看次数

在箭头函数中包含对象文字的括号是什么意思?

我见过这样的JavaScript代码:

let a = () => ({ id: 'abc', name: 'xyz' })
Run Code Online (Sandbox Code Playgroud)

( … )在这种情况下,包装对象的括号引用了什么?这是速记return吗?

javascript ecmascript-6 arrow-functions

24
推荐指数
2
解决办法
3494
查看次数