在这个 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;
}
})();
与编写这样的函数相比:
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 的新手,我想确保学习最佳实践或编写像这样的大型函数。
最佳答案
每次调用 json_parse
时,您的变体都必须创建 word
、white
... 函数。他的方式让他创建一次它们并在闭包中捕获它们,这样他就可以访问它们,但他的职能之外的任何人都无法访问它们。
关于javascript - 为什么 Crockford 使用这种格式来编写 JSON.parse 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161239/