为什么coffeescript在函数中包含返回码

为什么coffeescript在函数中包含返回码,coffeescript,Coffeescript,我试图理解为什么我的coffeescript编译成意外的js代码,其中返回语句包含在函数中 class Smthg ... _askAgreement: (callback) => @$(@aggrementModalSelector).foundation('reveal', 'open') @$(document).on('opened.fndtn.reveal','[data-reveal]', () => console.log 'open

我试图理解为什么我的coffeescript编译成意外的js代码,其中返回语句包含在函数中

class Smthg
  ...
  _askAgreement: (callback) =>
    @$(@aggrementModalSelector).foundation('reveal', 'open')
    @$(document).on('opened.fndtn.reveal','[data-reveal]', () =>
      console.log 'opened'
    )
编入

BundleToOrderActionButtonView.prototype._askAgreement = function(callback) {
  this.$(this.aggrementModalSelector).foundation('reveal', 'open');
  return this.$(document).on('opened.fndtn.reveal', '[data-reveal]', (function(_this) {
    return function() {
      return console.log('opened');
    };
  })(this));
};
那么,为什么会这样:

console.log 'opened'
变成这样:

    return function() {
      return console.log('opened');
    };
当我期待这个的时候:

return console.log('opened');
因为胖箭头(
=>
)会强制嵌入
对象

它允许您访问
,就好像您不在功能范围内一样

class Smthg
  ...
  _askAgreement: (callback) =>
    @$(@aggrementModalSelector).foundation('reveal', 'open')
    @$(document).on('opened.fndtn.reveal','[data-reveal]', () =>
      console.log 'opened'
    )
使用常规箭头
->
,它不会生成额外的函数。

因为胖箭头(
=>
)会强制嵌入
对象

class Smthg
  ...
  _askAgreement: (callback) =>
    @$(@aggrementModalSelector).foundation('reveal', 'open')
    @$(document).on('opened.fndtn.reveal','[data-reveal]', () =>
      console.log 'opened'
    )
它允许您访问
,就好像您不在功能范围内一样

class Smthg
  ...
  _askAgreement: (callback) =>
    @$(@aggrementModalSelector).foundation('reveal', 'open')
    @$(document).on('opened.fndtn.reveal','[data-reveal]', () =>
      console.log 'opened'
    )
使用常规箭头
->
,它不会生成额外的函数。

因为胖箭头(
=>
)会强制嵌入
对象

class Smthg
  ...
  _askAgreement: (callback) =>
    @$(@aggrementModalSelector).foundation('reveal', 'open')
    @$(document).on('opened.fndtn.reveal','[data-reveal]', () =>
      console.log 'opened'
    )
它允许您访问
,就好像您不在功能范围内一样

class Smthg
  ...
  _askAgreement: (callback) =>
    @$(@aggrementModalSelector).foundation('reveal', 'open')
    @$(document).on('opened.fndtn.reveal','[data-reveal]', () =>
      console.log 'opened'
    )
使用常规箭头
->
,它不会生成额外的函数。

因为胖箭头(
=>
)会强制嵌入
对象

class Smthg
  ...
  _askAgreement: (callback) =>
    @$(@aggrementModalSelector).foundation('reveal', 'open')
    @$(document).on('opened.fndtn.reveal','[data-reveal]', () =>
      console.log 'opened'
    )
它允许您访问
,就好像您不在功能范围内一样

class Smthg
  ...
  _askAgreement: (callback) =>
    @$(@aggrementModalSelector).foundation('reveal', 'open')
    @$(document).on('opened.fndtn.reveal','[data-reveal]', () =>
      console.log 'opened'
    )

使用常规箭头
->
,它不会生成额外的函数。

在coffeescript中编写函数有两种方法

class Smthg
  ...
  _askAgreement: (callback) =>
    @$(@aggrementModalSelector).foundation('reveal', 'open')
    @$(document).on('opened.fndtn.reveal','[data-reveal]', () =>
      console.log 'opened'
    )
1) 使用单箭头语法:()->

2) 使用胖箭头语法:()=>

使用2时,它用于将其绑定到当前值“this”。因此,这将创建一个自执行函数闭包(IIFE),将“this”的当前值传递给闭包。然后,您可以在闭包中的任何内容中使用“this”,这将是您所期望的


在您的情况下,您不需要使用“this”值,因此您只需将函数声明更改为单箭头语法,它就可以正常工作

在coffeescript中编写函数有两种方法

1) 使用单箭头语法:()->

2) 使用胖箭头语法:()=>

使用2时,它用于将其绑定到当前值“this”。因此,这将创建一个自执行函数闭包(IIFE),将“this”的当前值传递给闭包。然后,您可以在闭包中的任何内容中使用“this”,这将是您所期望的


在您的情况下,您不需要使用“this”值,因此您只需将函数声明更改为单箭头语法,它就可以正常工作

在coffeescript中编写函数有两种方法

1) 使用单箭头语法:()->

2) 使用胖箭头语法:()=>

使用2时,它用于将其绑定到当前值“this”。因此,这将创建一个自执行函数闭包(IIFE),将“this”的当前值传递给闭包。然后,您可以在闭包中的任何内容中使用“this”,这将是您所期望的


在您的情况下,您不需要使用“this”值,因此您只需将函数声明更改为单箭头语法,它就可以正常工作

在coffeescript中编写函数有两种方法

1) 使用单箭头语法:()->

2) 使用胖箭头语法:()=>

使用2时,它用于将其绑定到当前值“this”。因此,这将创建一个自执行函数闭包(IIFE),将“this”的当前值传递给闭包。然后,您可以在闭包中的任何内容中使用“this”,这将是您所期望的


在您的情况下,您不需要使用“this”值,因此您只需将函数声明更改为单箭头语法,它就可以正常工作

我不明白你的评论是什么?将
()=>
替换为
()->
另外,在使用选项卡
Try CoffeeScript
时,您有一个即时的并排编译器,它将帮助您准确地看到您在CoffeeScript中所做的修改的结果。@FrankovskyiBogdan,因为这个.$(文档)的第三个参数需要一个函数。从闭包返回一个函数,“this”的值的作用域为闭包,允许您在闭包中的任何代码中使用。@FrankovskyiBogdan:它是一个立即调用的函数,用于将
this
对象包装到该函数中执行的代码的上下文中。此外,上的
参数需要是一个函数。这里我们有一个立即调用的函数,它返回另一个函数。(=>将变成这个:函数(_this)我不明白你的评论?将
()=>
替换为
()->
另外,在使用选项卡
Try CoffeeScript
时,您有一个即时的并排编译器,它将帮助您准确地看到您在CoffeeScript中所做的修改的结果。@FrankovskyiBogdan,因为这个.$(文档)的第三个参数需要一个函数。从闭包返回一个函数,“this”的值的作用域为闭包,允许您在闭包中的任何代码中使用。@FrankovskyiBogdan:它是一个立即调用的函数,用于将
this
对象包装到该函数中执行的代码的上下文中。此外,
上的
参数需要是一个函数。这里我们有一个立即调用的函数,它返回另一个函数。(=>将变成这个:函数(_this)我不明白你的评论?将
()=>
替换为
()->
另外,在使用选项卡
Try CoffeeScript
时,您有一个即时的并排编译器,它将帮助您准确地看到您在CoffeeScript中所做的修改的结果。@FrankovskyiBogdan,因为这个.$(文档)的第三个参数需要一个函数。从闭包返回一个函数,“this”的值为scop