我最近开始维护其他人的JavaScript代码.我正在修复错误,添加功能,并尝试整理代码并使其更加一致.
以前的开发人员使用两种声明函数的方法,如果背后有原因,我就无法解决.
这两种方式是:
var functionOne = function() {
// Some code
};
Run Code Online (Sandbox Code Playgroud)
function functionTwo() {
// Some code
}
Run Code Online (Sandbox Code Playgroud)
使用这两种不同方法的原因是什么?每种方法的优缺点是什么?有一种方法可以通过一种方法完成,而另一种方法无法完成吗?
今天我完全碰到了这个问题:Uncaught TypeError :(中间值)(...)不是函数
所以是的,在适当的位置放置分号后,它不再抛出该错误.但是,我从来不知道javascript中有这样的概念(intermediate value).
显然,您可以使用以下代码生成该错误的类似变体:
[myFunc] = function(someVar){
console.log(someVar);
return 7;
}();
//error thrown: (intermediate value) is not a function or its return value is not iterableRun Code Online (Sandbox Code Playgroud)
如果你命名这个函数,它不再是intermediate:
function hi(){return undefined}
[a] = hi();
// error thrown: hi is not a function or its return value is not iterableRun Code Online (Sandbox Code Playgroud)
我理解它指的是中间的东西,但在这种情况下我们有一个匿名函数,并且有方法来确定函数是否是匿名的,因此错误消息可能更明确一些.
搜索js mozilla mdn我找到了这个页面,Array.from可以找到"中间数组"的概念:
更清楚的
Array.from(obj, mapFn, thisArg)是Array.from(obj).map(mapFn, thisArg),除了不创建中间数组之外,具有相同的结果.
但除了这里和那里的信息之外,还不清楚中间值是什么. …