javascript - 为什么 Crockford 使用这种格式来编写 JSON.parse 函数?

标签 javascript json function syntax

在这个 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 时,您的变体都必须创建 wordwhite... 函数。他的方式让他创建一次它们并在闭包中捕获它们,这样他就可以访问它们,但他的职能之外的任何人都无法访问它们。

关于javascript - 为什么 Crockford 使用这种格式来编写 JSON.parse 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161239/

相关文章:

javascript - Javascript 事件队列是否是一个简单的 FIFO?

excel - 在一组单元格中查找单词

javascript - 在函数调用时将数组解析为字符串

javascript - 在 JavaScript 中,如何让代码在执行 for 循环时将随机生成的数字一一相加?

javascript - 让 `node --prof` 在记录任何东西之前稍等一下?

javascript - 如何使用 jquery 在旋转木马上方隐藏和显示页脚?

javascript - 将返回值从 php 传递给 js

ajax - 是否有标准的 'null' mime 类型

android - 使用 AsyncTask 从解析的 JSON 对象中设置文本

c - 命令提示符下无输出