Javascript 调用命名函数表达式
我能在没有变量名的情况下立即调用(调用)命名函数表达式吗Javascript 调用命名函数表达式,javascript,Javascript,我能在没有变量名的情况下立即调用(调用)命名函数表达式吗 var bookingMask = function (ac) { .... }('.selectDates'); 如果您真正指的是“命名”函数表达式,则可以: (function bookingMask(ac) { // ... })('.selectDates'); 注意()包装它。否则,function关键字将导致解析器假定它是函数声明的开始,而您不能以这种方式直接调用函数声明 如果要在函数中使用bookingMask(
var bookingMask = function (ac) {
....
}('.selectDates');
如果您真正指的是“命名”函数表达式,则可以:
(function bookingMask(ac) {
// ...
})('.selectDates');
注意()
包装它。否则,function
关键字将导致解析器假定它是函数声明的开始,而您不能以这种方式直接调用函数声明
如果要在函数中使用bookingMask
(例如递归),则可能需要这样做
实例:
(功能预订掩码(ac){
console.log(“ac是:+ac);/“ac是:。选择日期”
console.log(bookingMask类型);/“函数”
})(“.selectDates”)代码>声明函数有两种不同的方式,您可以使用或。“expression”部分意味着它要么被赋给一个值var func=function cat(){}
,要么使用括号告诉JavaScript引擎获取其中的值并将其作为表达式进行计算。因此,立即调用的函数表达式IFFE的名称来自首先将函数转换为表达式(function(){})
,然后调用它(function(){})(
)
因此,在您的情况下,您不希望计算函数“将其分配给变量”,您希望创建赋值并立即运行函数,就像这样
(function(ac) {
// code...
})('.selectDates');
如果你觉得很冒险,你也可以使用括号以外的其他操作符来评估IFFE,例如
+function IFFE(){
}()
但我想你最想要的是那两种不?但是知道这一点很有帮助!代码中没有命名函数。你能澄清一下你的意思吗?因为你的问题的标题与实际情况相冲突question@slebetman是的,这个问题的答案反映了这个问题。您希望名称bookinMask
在作为IFFE执行后可用吗?如果不是@T.J.Crowder,答案就是你需要的。否则,您应该澄清一下。在我看来,您需要一行语句和一个表达式。声明函数的方法只有一种,函数表达式的赋值或立即调用函数表达式(IIFE)不是函数声明。;-)如果您在IFFE中使用函数名,那么您仍然在声明函数。不,您不是。函数表达式(无论是否命名)不是函数声明。
-function IFFE(){
}()