很久以前,我已經閱讀了很多關於javascript編碼約定的知識,而我想要決定的其中一件事是聲明函數的更好方法。我終於莫名其妙地堅持與應該返回函數的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',只需使用'var test = function()...' – Barmar
謝謝!!! 我不知道我怎麼可以忽略這個......(我不打算寫在那裏,我不知道XD是怎麼回事) 我仍然很想知道它爲什麼會變成它應該產生的東西雖然1 – Isti115