标签: arrow-functions

CoffeeScript,何时在箭头( - >)上使用胖箭头(=>),反之亦然

在CoffeeScript中构建类时,是否应使用=>("胖箭头")运算符定义所有实例方法,并使用->运算符定义所有静态方法?

coffeescript arrow-functions

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

使用jQuery $(this)和ES6 Arrow函数(词汇这个绑定)

使用带有词法this绑定的ES6箭头功能非常棒.

但是,我刚刚遇到一个问题,使用它与典型的jQuery点击绑定:

class Game {
  foo() {
    self = this;
    this._pads.on('click', function() {
      if (self.go) { $(this).addClass('active'); }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

改为使用箭头功能:

class Game {
  foo() {
    this._pads.on('click', () => {
      if (this.go) { $(this).addClass('active'); }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

然后$(this)转换为ES5(self = this)类型闭包.

是一种让Traceur忽略"$(this)"进行词法绑定的方法吗?

javascript jquery ecmascript-6 arrow-functions

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

在ES6/Typescript中使用_(下划线)变量和箭头函数

我在一个Angular示例中遇到了这个构造,我想知道为什么选择它:

_ => console.log('Not using any parameters');
Run Code Online (Sandbox Code Playgroud)

我理解变量_意味着不关心/不使用但因为它是唯一的变量是有任何理由更喜欢使用_ over:

() => console.log('Not using any parameters');
Run Code Online (Sandbox Code Playgroud)

当然,这不能是一个字符少于键入.()语法在我看来更好地传达了intent,并且更具特定类型,因为否则我认为第一个示例应该是这样的:

(_: any) => console.log('Not using any parameters');
Run Code Online (Sandbox Code Playgroud)

如果重要,这就是使用它的背景:

submit(query: string): void {
    this.router.navigate(['search'], { queryParams: { query: query } })
      .then(_ => this.search());
}
Run Code Online (Sandbox Code Playgroud)

javascript typescript ecmascript-6 arrow-functions

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

为什么JSX道具不应该使用箭头函数或绑定?

我正在使用我的React app运行lint,我收到此错误:

error    JSX props should not use arrow functions        react/jsx-no-bind
Run Code Online (Sandbox Code Playgroud)

这就是我正在运行箭头功能(内部onClick)的地方:

{this.state.photos.map(tile => (
  <span key={tile.img}>
    <Checkbox
      defaultChecked={tile.checked}
      onCheck={() => this.selectPicture(tile)}
      style={{position: 'absolute', zIndex: 99, padding: 5, backgroundColor: 'rgba(255, 255, 255, 0.72)'}}
    />
    <GridTile
      title={tile.title}
      subtitle={<span>by <b>{tile.author}</b></span>}
      actionIcon={<IconButton onClick={() => this.handleDelete(tile)}><Delete color="white"/></IconButton>}
    >
      <img onClick={() => this.handleOpen(tile.img)} src={tile.img} style={{cursor: 'pointer'}}/>
    </GridTile>
  </span>
))}
Run Code Online (Sandbox Code Playgroud)

这是一个应该避免的不良做法吗?什么是最好的方法呢?

javascript jsx ecmascript-6 reactjs arrow-functions

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

是否可以在ES6/7中导出箭头功能?

下面的export语句给出了语法错误

export default const hello = () => console.log("say hello")
Run Code Online (Sandbox Code Playgroud)

为什么?

我只能导出命名函数

export function hello() {
  console.log("hello")
}
Run Code Online (Sandbox Code Playgroud)

是什么原因?

javascript ecmascript-6 arrow-functions

77
推荐指数
2
解决办法
4万
查看次数

箭头函数"表达式预期"语法错误

我想转换这段代码:

var formatQuoteAmount = function (tx) {
    return Currency.toSmallestSubunit(tx.usd, 'USD');
};
var quoteAmounts = res.transactions.map(formatQuoteAmount);
Run Code Online (Sandbox Code Playgroud)

进入匿名箭头功能.我写过:

var quoteAmounts = res.transactions.map(tx => Currency.toSmallestSubunit(tx.usd, 'USD'));
Run Code Online (Sandbox Code Playgroud)

expression expected在箭头处遇到语法错误.我在这里查找了默认语法,看起来我的代码的语法是正确的.任何想法可能是什么问题?

我有它使用这种语法:

    var quoteAmounts = res.transactions.map(function (tx) {
        return Currency.toSmallestSubunit(tx.usd, 'USD')
    });
Run Code Online (Sandbox Code Playgroud)

但我想把它变成一个单行,带箭头功能.

继续前进 node v5.3.0

javascript node.js ecmascript-6 arrow-functions

51
推荐指数
2
解决办法
4万
查看次数

ES6中的箭头功能中"this"指的是什么?

我在几个地方读过,关键的区别是" this在箭头函数中是词法绑定的".这一切都很好,但我实际上并不知道这意味着什么.

我知道这意味着它在定义函数体的大括号范围内是独一无二的,但我实际上无法告诉你以下代码的输出,因为我不知道所指的this是什么,除非它指的是胖箭头函数本身....这似乎没用.

var testFunction = () => { console.log(this) };
testFunction();
Run Code Online (Sandbox Code Playgroud)

javascript this ecmascript-6 arrow-functions

48
推荐指数
3
解决办法
1万
查看次数

ES6箭头函数和与Function.prototype.bind绑定的函数之间有什么区别(如果有的话)?

在我看来,在ES6,下面的两个功能都非常接近相同的:

function () {
  return this;
}.bind(this);

() => {
  return this;
};
Run Code Online (Sandbox Code Playgroud)

最终结果看起来是一样的:箭头函数生成一个JavaScript函数对象,其this上下文绑定到与this创建它们的位置相同的值.

显然,在一般意义上,Function.prototype.bind它比箭头函数更灵活:它可以绑定到本地以外的值this,并且它可以this在任何时间点绑定任何函数,可能在最初创建之后很长时间.不过,我不问如何bind本身就是从箭头的功能不同,我问箭头的功能是如何从立即调用不同bind使用this.

ES6中的两个结构之间是否有任何差异?

javascript ecmascript-6 function-binding arrow-functions

47
推荐指数
3
解决办法
1万
查看次数

没有花括号的箭头功能

我是ES6和React的新手,我一直在看箭头功能.为什么有些箭头函数在胖箭头之后使用花括号而有些使用括号?例如:

const foo = (params) => (
    <span>
        <p>Content</p>
    </span>
);
Run Code Online (Sandbox Code Playgroud)

const handleBar = (e) => {
    e.preventDefault();
    dispatch('logout');
};
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

javascript ecmascript-6 react-jsx arrow-functions

47
推荐指数
6
解决办法
1万
查看次数

关于ES6 Arrow函数中`arguments`的官方信息?

(() => console.log(arguments))(1,2,3);

// Chrome, FF, Node give "1,2,3"
// Babel gives "arguments is not defined" from parent scope
Run Code Online (Sandbox Code Playgroud)

根据Babel(以及我可以告诉TC39的初步建议),这是"无效的",因为箭头函数应该使用其父作用域作为参数.我能找到的唯一信息与此相矛盾的是一条评论说这被TC39拒绝,但我找不到任何支持这一点.

只是在这里寻找官方文档.

javascript ecmascript-6 arrow-functions

38
推荐指数
2
解决办法
6226
查看次数