在使用 $.getScript
运行脚本后,是否有某种方法可以访问该脚本的 namespace ?由于 plugin
是在全局范围内定义的,我本以为我能够运行它。
index.js
$.getScript('plugin.js').then((...result) => console.log(result));
$.getScript('plugin.js').then(plugin());
plugin.js
function plugin()
{
console.log("plugin.js");
return "plugin";
}
_输出__
ReferenceError: plugin is not defined
at https://replit.org/data/web_hosting_uncache/abalter/loading-scripts-and-callbacks-1/index.js:5:25
[ 'var plugin = function()\n{\n console.log("plugin.js");\n return "plugin";\n}',
'success',
Promise {
readyState: 4,
getResponseHeader: [Function],
getAllResponseHeaders: [Function],
setRequestHeader: [Function],
overrideMimeType: [Function],
statusCode: [Function],
abort: [Function],
state: [Function],
always: [Function],
catch: [Function],
pipe: [Function],
then: [Function],
promise: [Function],
progress: [Function],
done: [Function],
fail: [Function],
responseText: 'var plugin = function()\n{\n console.log("plugin.js");\n return "plugin";\n}',
status: 200,
statusText: 'success' } ]
最佳答案
问题出在这一行:
$.getScript('plugin.js').then(plugin());
then
接受函数作为参数,而不是函数调用(除非所述函数调用是对高阶函数的调用)返回一个要放入 promise 链中的函数)
您在发出脚本请求的同时调用 plugin()
。您不希望这样 - 您只想在请求完成后才调用 plugin
。但在 getScript
运行时,plugin
尚未在窗口范围内定义。在 then
内部,放置一个一旦调用就会运行 plugin
的函数:
$.getScript('plugin.js').then(() => plugin());
关于javascript - 如何访问使用 $.getScript 运行的脚本中的函数或变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033587/