Uncaught TypeError: *** is not a function

Uncaught TypeError: *** is not a function

我有以下 JavaScript 从 CMS 自动生成的代码。

...
function setEmail() {
    alert("Hello");
}
...

{if(window&&$){$(window).load(function(){var _rsm741573_01 = findControl("CrmTextField_C015");
   if(_rsm741573_01)bindEvent('changes',_rsm741573_01,function(s,a){
      (function(y,z){
        setEmail()(y,z);
      })(s,a);
   });
})}}

当现场发生变化时,我总是会遇到此错误:

(index):640 Uncaught TypeError: setEmail(...) is not a function

如何声明函数才能避免这个错误?

在您的代码中,您正在调用 setEmail()(y,z);。也就是说,您正在调用 setEmail(),然后从该函数中获取 return 值并尝试再次将其作为函数调用,传入 yz。你的 setEmail 函数根本没有 return 任何东西,所以它绝对不是 return 另一个需要两个参数的函数。

从上下文来看,不清楚 为什么 你打电话给 setEmail()(y,z);,所以根据这是否有意,你要么需要删除一组括号,这样您只调用一个函数,或者将 setEmail 重写为 return 另一个函数,具体取决于您在这里的实际目标。