Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript/jQuery作用域_Javascript_Jquery_Jquery Plugins - Fatal编程技术网

JavaScript/jQuery作用域

JavaScript/jQuery作用域,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,嗨,我正在扩展一个现有的插件来使用静态JSON,而不是从服务器加载它。这是扩展的精简版本: (function ($) { $.fn.MyExtension = function (options) { return this.each(function () { if (opts.load_Json) { $.get("", function (result) { fromJ

嗨,我正在扩展一个现有的插件来使用静态JSON,而不是从服务器加载它。这是扩展的精简版本:

(function ($) {
    $.fn.MyExtension = function (options) {
        return this.each(function () {
            if (opts.load_Json) {
                $.get("", function (result) {
                    fromJson(opts.load_Json)
                });
            }

            var fromJson = function (json) {
                    // json stuff..
                 }  
        });
});

如果我删除
$.Get
并直接调用
fromJson
,而不回拨,我会收到一个错误,说明未定义
fromJson
。这一定是某种形式的范围问题,但我无法解决它?

这不是范围问题。这是时机

在传递给每个的匿名函数结束之前,函数不会从JSON分配给

如果从
get
回调调用它,那么该赋值将在HTTP响应返回和函数启动之前发生

如果你直接给它打电话,它就不存在了

重新排序:

    return this.each(function () {
        var fromJson = function (json) {
                // json stuff..
             }  

        if (opts.load_Json) {
            $.get("", function (result) {
                fromJson(opts.load_Json)
            });
        }

    });
或使用功能声明(以吊装为准):


您有
选项
,以后有
选项
。这真的是源于您的代码,还是仅仅是一个问题输入错误?如果您将
var fromJson=function(json){}
赋值移到条件之上,那么您编写代码时也会定义一个函数,但随后会将其丢弃,对它不做任何处理,也不会在其中运行代码。恕我直言,我建议你写一篇文章,然后把它贴出来。太棒了,一针见血。
    return this.each(function () {
        if (opts.load_Json) {
            $.get("", function (result) {
                fromJson(opts.load_Json)
            });
        }

        function fromJson (json) {
                // json stuff..
             }  
    });