很久以前,我读了很多有关 javascript 编码约定的内容,我想要决定的事情之一是声明函数的更好方法。我终于以某种方式坚持了
var func_name = function(){};
版本,因为它在某些情况下似乎更有用,但直到现在我才真正找到它们之间不能以相同方式工作的东西。
我正在编写一个函数,该函数应该返回一个新函数以在 setTimeout 命令中使用,但我无法让它正常工作,并且在我将整个事情简化为以下测试代码之后:
var test = new function(x) {
return function() {
if (x % 2 == 1) {
console.log('a');
}
else {
console.log('b');
}
x++;
};
};
我碰巧尝试将其写在
function func_name(){}
样式会有所帮助(因为我真的看不到我的代码的问题),而且有趣的是这段代码
function test(x) {
return function() {
if (x % 2 == 1) {
console.log('a');
}
else {
console.log('b');
}
x++;
};
}
似乎工作正常。 发现的一件奇怪的事情是,在控制台中玩了一下之后,我意识到第一个实际上成为了它应该生成的函数。
我也在 Chrome 和 Firefox 中测试了它,我也尝试过这样使用它
var test = new function(x) {
var result = function() {
if (x % 2 == 1) {
console.log('a');
}
else {
console.log('b');
}
x++;
};
return result;
};
但我没能让它发挥作用。
我会对这种现象的任何解释感兴趣,并且如果有一种方法使这种类型的函数声明能够生成函数,我也会很着迷。
提前致谢!
<小时/>编辑:我不知道怎么做,但不知何故,new
关键字错误地到达那里:D(甚至由于我愚蠢的复制粘贴懒惰而进入第三个版本。 ....)
我仍然有兴趣知道为什么这个函数会变成它应该创建的样子!
最佳答案
为什么要使用new
?删除它,在我看来应该没问题。
您将它用作构造函数
。
虽然有效,但可能会创建问题作为您当前的问题。
关于应该返回函数的 JavaScript 函数变成了函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099827/