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这样的库做些贡献