一个js文件中定义的函数在另一个js文件中未定义
function defined in one js file is undefined in another js file
根据这个答案,我的函数调用应该可以正常工作,但实际上没有:Calling a javascript function in another js file
我的代码(简化版):
file1.js:
$(document).ready(function(){
function loadFYfResults(sizes){
alert('hello');
}
});
file2.js
$(document).ready(function(){
$('.size-button').click(loadFYfResults(sizes));
});
theme.liquid
在头部:
{{ 'file1.js' | asset_url | script_tag}}
{{ 'file2.js' | asset_url | script_tag}}
调用该函数时,控制台抛出此错误:
"Uncaught ReferenceError: loadFyfResults is not defined"
My site is built using Shopify's liquid theme platform 但我不确定是否与它有任何关系.谁能发现我做错了什么?
您的 loadFYfResults
函数在定义它的函数范围之外是未知的 ( ready(function(){
)。
这会起作用:
function loadFYfResults(sizes){
alert('hello');
}
$(document).ready(loadFYfResults);
问题是您在 document.ready 函数的回调中定义函数 loadFYfResults
,因此这意味着 loadFYfResults 仅对 document.ready 回调是本地的。如果您希望它被全局定义,您应该在 document.ready
回调之外定义它。
这些功能超出了彼此的范围。您可以通过查看此块来了解这一点:
$(document).ready(function(){
function loadFYfResults(sizes){
alert('hello');
}
});
console.log(loadFYfResults);
在这种情况下,loadFYFResults 将为 undefined
,因为它不再在定义 loadFYfResults
的范围内。
为了在另一个文件中使用该函数,必须在外部作用域中对您的 loadFYfResults 函数进行另一个引用,或者将其从 $(document).ready 包装器中取出,因为您知道它仅当第二个函数准备好文档时才会调用。
根据这个答案,我的函数调用应该可以正常工作,但实际上没有:Calling a javascript function in another js file
我的代码(简化版):
file1.js:
$(document).ready(function(){
function loadFYfResults(sizes){
alert('hello');
}
});
file2.js
$(document).ready(function(){
$('.size-button').click(loadFYfResults(sizes));
});
theme.liquid
在头部:
{{ 'file1.js' | asset_url | script_tag}}
{{ 'file2.js' | asset_url | script_tag}}
调用该函数时,控制台抛出此错误:
"Uncaught ReferenceError: loadFyfResults is not defined"
My site is built using Shopify's liquid theme platform 但我不确定是否与它有任何关系.谁能发现我做错了什么?
您的 loadFYfResults
函数在定义它的函数范围之外是未知的 ( ready(function(){
)。
这会起作用:
function loadFYfResults(sizes){
alert('hello');
}
$(document).ready(loadFYfResults);
问题是您在 document.ready 函数的回调中定义函数 loadFYfResults
,因此这意味着 loadFYfResults 仅对 document.ready 回调是本地的。如果您希望它被全局定义,您应该在 document.ready
回调之外定义它。
这些功能超出了彼此的范围。您可以通过查看此块来了解这一点:
$(document).ready(function(){
function loadFYfResults(sizes){
alert('hello');
}
});
console.log(loadFYfResults);
在这种情况下,loadFYFResults 将为 undefined
,因为它不再在定义 loadFYfResults
的范围内。
为了在另一个文件中使用该函数,必须在外部作用域中对您的 loadFYfResults 函数进行另一个引用,或者将其从 $(document).ready 包装器中取出,因为您知道它仅当第二个函数准备好文档时才会调用。