在这个JSON.parse函数中: https://github.com/douglascrockford/JSON-js/blob/master/json_parse.js
为什么crockford选择在他的变量声明中声明这么多函数然后将1个函数分开然后在结尾处返回一个main函数?
编写这样的函数是否有好处:
伪语法:
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的新手,我想确保我学习最佳实践或编写像这样的大型函数。
答案 0 :(得分:7)
每次调用word
时,您的变体都必须创建white
,json_parse
...函数。他的方式让他创造了一次并将它们捕获在一个封闭物中,这样他们就可以使用它们,但不能让他接触到其他任何人。