很久以前我已经阅读了很多关于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(甚至是我的那个愚蠢的复制粘贴懒惰进入第三个版本...... 。)
我仍然有兴趣知道为什么函数会成为它应该创建的东西!
答案 0 :(得分:2)
您为什么使用new
?删除它,它应该是好的IMO。
您正在使用它,就好像它是Construtor
。
虽然有效,但可以将问题视为当前问题。