Javascript 结尾带有神秘括号的箭头函数令人困惑

Javascript 结尾带有神秘括号的箭头函数令人困惑,javascript,ecmascript-6,Javascript,Ecmascript 6,我对这个功能感到困惑: const today = ( d => new Date() )(new Date); 所以我不知道从哪里读到这篇文章,甚至不知道这篇文章叫什么。所以我为这个糟糕的问题道歉。无论如何,我对函数末尾的(新日期)做了什么感到困惑。有人能给我指一指这里发生的事情或向我解释一下吗 我明白了新日期的含义。实际上正是(新日期)的目的和功能让我大吃一惊。这里有一个简单的函数,它接受一个名为d的参数,并返回一个新日期 const f=d=>newdate(); console

我对这个功能感到困惑:

const today = ( d => new Date() )(new Date);
所以我不知道从哪里读到这篇文章,甚至不知道这篇文章叫什么。所以我为这个糟糕的问题道歉。无论如何,我对函数末尾的
(新日期)
做了什么感到困惑。有人能给我指一指这里发生的事情或向我解释一下吗


我明白了新日期的含义。实际上正是
(新日期)
的目的和功能让我大吃一惊。

这里有一个简单的函数,它接受一个名为
d
的参数,并返回一个
新日期

const f=d=>newdate();

console.log(f())
这里有一个简单的函数,它接受一个名为
d
的参数,并返回一个
新日期

const f=d=>newdate();

console.log(f())在像IIFE一样创建函数之后,您将立即调用该函数,因此结果变量将包含您传递的结果。您正在使用arrow函数执行相同的操作

在下面的示例中,两个表达式是相同的。它会立即调用函数:

const today=d=>console.log(d);

今天(新日期)
在像IIFE一样创建函数之后,您将立即调用该函数,因此结果变量将包含您传递的结果。您正在使用arrow函数执行相同的操作

在下面的示例中,两个表达式是相同的。它会立即调用函数:

const today=d=>console.log(d);
今天(新日期)
  • 今天
    将保存匿名函数返回的值
  • 匿名函数将消散到以太中
  • 首先,匿名函数将接受一个毫无意义的
    newdate
    参数,完全忽略它,并返回一个
    newdate()
    值(今天分配给
  • 今天
    将保存匿名函数返回的值
  • 匿名函数将消散到以太中
  • 首先,匿名函数将接受一个毫无意义的
    newdate
    参数,完全忽略它,并返回一个
    newdate()
    值(今天分配给

    • 这看起来比实际情况更令人困惑。如果我们将其分解:

      // The following function returns a new Date
      // regardless of any arguments passed to it
      
      const someFunction = d => newDate();
      
      // This could also be written as
      const theSameFunction = () => newDate();
      
      iLife()是在定义后立即运行的生命。这可以通过将匿名函数包装在括号中并调用它来实现:

      ( () => console.log('Hello world') )();
      
      // prints 'Hello world' to the console
      
      综上所述:

      const today = ( d => new Date() )(new Date);
      // The d argument here is useless,
      // since it is never used in the return of the IIFE
      
      const alsoToday = ( () => new Date() )();
      // This achieves the same effect as the first IFFE
      

      这看起来比实际情况更令人困惑。如果我们将其分解:

      // The following function returns a new Date
      // regardless of any arguments passed to it
      
      const someFunction = d => newDate();
      
      // This could also be written as
      const theSameFunction = () => newDate();
      
      iLife()是在定义后立即运行的生命。这可以通过将匿名函数包装在括号中并调用它来实现:

      ( () => console.log('Hello world') )();
      
      // prints 'Hello world' to the console
      
      综上所述:

      const today = ( d => new Date() )(new Date);
      // The d argument here is useless,
      // since it is never used in the return of the IIFE
      
      const alsoToday = ( () => new Date() )();
      // This achieves the same effect as the first IFFE
      

      这只是一个。这只是一个。好的。这是非常明显的。谢谢我只是没有看到。如果new Date()未使用,那么将其作为参数传递的目的是什么?@Vineesh当您可以只执行
      const today=new Date()
      时,首先创建函数的目的是什么?我猜还有更多的事情要做,这只是一些书或教程中的一个组成部分。现在我可以把它变成这样的东西
      constforday=(d=>newdate(d.setDate(d.getDate()-1)))(newdate)谢谢@aaaaa的评论。我只是想了解ES6的语法以及如何使用它。这样也许有一天我可以为momentjs.Ok这样的图书馆捐款。这是非常明显的。谢谢我只是没有看到。如果new Date()未使用,那么将其作为参数传递的目的是什么?@Vineesh当您可以只执行
      const today=new Date()
      时,首先创建函数的目的是什么?我猜还有更多的事情要做,这只是一些书或教程中的一个组成部分。现在我可以把它变成这样的东西
      constforday=(d=>newdate(d.setDate(d.getDate()-1)))(newdate)谢谢@aaaaa的评论。我只是想了解ES6的语法以及如何使用它。那样的话,也许有一天我可以为momentjs这样的库做些贡献