在此JSON.parse功能: https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js爲什麼Crockford使用這種格式來編寫JSON.parse函數?
爲什麼克羅克福德選擇在他的變量聲明來聲明如此多的功能,然後分開1個功能,然後在年底返回一個主要功能?
是否有利於寫一個函數是這樣的:
僞語法:
var json_parse = (function() {
var x,
y,
z,
string = function() {
<code>
},
word = function() {
<code>
},
white = function() {
<code>
},
value;
value = function() {
<code>
white();
string();
etc..
};
return function (string) {
return something;
}
})();
VS寫一個函數是這樣的:
var parse_json = function (input) {
var x, y, z;
function string() {
<code>
}
function word() {
<code>
}
function white() {
<code>
}
function value() {
<code>
white();
string();
etc..
}
function mainParse() {
return something;
}
return mainParse(input);
};
希望我的小代碼示例意義。我是JavaScript新手,想確保學習最佳實踐或編寫像這樣的大型函數。
在第二種情況下,實際上每次運行'parse_json' – zerkms
時都會創建一堆函數,因此您在第二種情況下擁有它的方式將不起作用,因爲您返回函數的調用而不是函數。 。如果你返回一個函數,比使用doug的語法不會創建更多的函數... – dandavis
@dandavis在crockford的例子中,外部函數立即被調用,而OP的不是,所以他們返回相同的東西 - 有點 - 但像Amadan說的那樣,Crockford只在封閉內部創建函數一次。 – Semicolon