2017-03-04 79 views
0

當函數剛好在調用下面定義時,我得到一個Uncaught ReferenceError: fun is not definedjQuery未捕獲的引用錯誤

我簡化儘可能我的腳本重現錯誤

fun(); 

function fun() { 
} 

var promise = new Promise((resolve, reject) => call(resolve, reject)); 

const call = (success, error) => { }; 

我得到這個例外

Uncaught ReferenceError: fun is not defined 
    at eval (eval at globalEval (jquery.js:545), <anonymous>:1:1) 
    at eval (<anonymous>) 
    at Function.globalEval (jquery.js:545) 
    at text script (jquery.js:7617) 
    at ajaxConvert (jquery.js:7592) 
    at done (jquery.js:7350) 
    at XMLHttpRequest.<anonymous> (jquery.js:7822) 
    at Object.send (jquery.js:7845) 
    at Function.ajax (jquery.js:7301) 
    at Function._evalUrl (jquery.js:5880) 

這似乎是工作,如果我刪除var promise線或{}更換call(resolve, reject) ,但我不明白爲什麼。

jQuery version 2.0.3

任何想法爲什麼會發生這種情況?

編輯:我有其他問題與jQuery的globalEval有關,我通過移動jQuery腳本標記作爲最後一個解決了它們,但仍然沒有幫助。

+0

我不明白...你在哪裏叫'fun()'?代碼的重要部分在這裏丟失。我無法複製你的問題。請添加複製您在這裏或http://jsfiddle.net上遇到的問題的代碼。但是這個錯誤本身就說明了一切。這可能是一個範圍相關的問題。 – Ionut

+0

@Ionut哎呀,這溜出了。只是缺少頂部的樂趣() – user4388177

+0

我沒有看到這裏jQuery如何相關。你在哪裏使用它? – Li357

回答

0
<head> 
    <script src="Scripts/jquery/jquery.js"></script> 

    <script> 
     function run() { 
      var toReload = "app.js"; 
      $('script[src="' + toReload + '"]').remove(); 
      $('<script>').attr('src', toReload).appendTo('head'); 
     } 
    </script> 
</head> 
<body> 
    <div id="content"> 
     <button onclick="run()">Run</button> 
    </div> 
</body> 

我是動態加載我的代碼,jQuery變得困惑。在jQuery解決它之前將腳本移動到腳本標記中。