javascript - 理解 JavaScript 代码片段

标签 javascript jquery jsonp

此代码来自http://twitter.github.com/

(function ($, undefined) {
    // more code ...

    $.getJSON("https://api.github.com/orgs/twitter/members?callback=?", function (result) {
        var members = result.data;
        $(function () {
            $("#num-members").text(members.length);
        });
    });

    // more code ...
})(jQuery);

首先,我了解的事情:

  • 所有代码都封装在 IIFE 中
  • 他们使用 Github API 来获取成员
  • URL 包含字符串“?callback=?”因此请求被视为 JSONP。

我不明白的是:为什么他们在请求成功时执行的函数中使用 $(function() ...

这段代码等效吗?

$(function() {
    $.getJSON("https://api.github.com/orgs/twitter/members?callback=?", function (result) {
        var members = result.data;
         $("#num-members").text(members.length);
    });
});

也许我错了,但我认为第二个代码片段等待文档加载,然后请求成员......所以不存在并行性?在第一个代码片段中,请求与文档加载并行完成。如果我错了,请纠正我。

最佳答案

如果向 $ 函数传递一个函数作为其参数(这是一个严重重载的函数),它将在 DOM 准备好时调用该函数。

将其放置在那里会阻止内部代码(尝试修改 DOM)在 DOM 完成之前运行。

如果在调用 $ 之前 DOM 已经完成,那么该函数将立即被调用。

请注意,getJSON 发送的 HTTP 请求可能在浏览器完成加载和解析原始文档的 DOM 之前或之后获得响应。

这允许发送数据请求而无需等待 DOM 准备好,同时仍然防止过早修改。

Is this code equivalent?

。它会等待 DOM 准备好,然后再发送数据请求。

关于javascript - 理解 JavaScript 代码片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683107/

相关文章:

javascript - Coldfusion 中的重定向——还是强制 Javascript?

javascript - 如何获取选择的选项ID?

javascript - 如何让星级保持稳定?

javascript - 我不明白 JSONP 与 AJAX 有何不同

javascript - 单击按钮时 JQuery OnClick 不起作用

Javascript IF 语句未按预期返回

jquery - 阻止在文本框中输入某些字符?

javascript - 无法在网页上显示的 HTML 段落上叠加图像图标

javascript - worldweatheronline API 响应错误

javascript - 如何创建随机方法名称