【发布时间】:2015-10-16 01:43:27
【问题描述】:
在这个 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 新手,我想确保自己学习最佳实践或编写类似这样的大型函数。
【问题讨论】:
-
第二种情况,每次运行
parse_json时都会创建一堆函数@ -
实际上,在第二种情况下,您拥有它的方式将不起作用,因为您返回的是函数而不是函数的调用...如果您返回了一个函数,那么将不会创建更多函数使用时比使用 doug 的语法...
-
@dandavis 在克罗克福德的例子中,外部函数被立即调用,而 OP 的不是,所以它们确实返回相同的东西——有点——但就像阿马丹说的那样,克罗克福德只创建闭包内的函数一次。
-
@Semicolon:啊,好眼力。我的主要观点是,不是 OP 询问的“var ,,,”东西导致了区别,其他 cmets+answer 让我不清楚。
标签: javascript json function syntax