试图弄清楚如何正确命名我的 JavaScript 以避免与其他库以及全局项发生冲突。我正在查看一些代码,并注意到一些关于 JavaScript 的东西我只是不明白。实际上,我什至不知道如何提出这个问题,所以我将使用一些人为的代码示例。
var varFuncTest = (function(){
_funcTest = function(params){
return "These are the params that were passed in: " + params;
};
return _funcTest;
})();
console.log(varFuncTest("params params params"));
输出:这些是传入的参数: params params params
当我运行此代码时,它按预期工作,但这只是因为当我声明变量时,我包装了正在构建的函数并在 () 中返回一个专门的函数,然后在之后添加 ()。当我记录函数调用时,我得到了正确的字符串打印输出。
现在,当我从末尾删除那组额外的 () 时,因为它们在我未经训练的眼睛看来是不需要的,所以日志会打印出对象类型而不是字符串。
var varFuncTest = (function(){
_funcTest = function(params){
return "These are the params that were passed in: " + params;
};
return _funcTest;
});
console.log(varFuncTest("params params params"));
输出:函数()
这里发生了什么?为什么需要第二组 ()?如果这是 JavaScript 语言的一个特殊功能,它指的是什么,它的文档在 JavaScript API 中的哪里可以找到?
代码是相同的减去第一个示例第 6 行的结尾 ()。这不是一个错字,因为它实际上会影响 JavaScript 中的执行。它们都返回一个分配给变量的函数对象。