嗨,这是我在js页面中的代码,其名称为script.js
(function ($) {
myfunc()
{
//some jquery codes
}
}
并且我在这样的html页面中使用此功能
<html>
<script src='js/script.js'></script>
<button id='btnSent'>sent</button>
<script>
(function ($) {
$('#btns').click(function () {
myfunc();
})
}(jQuery));
</script>
</html>
但是在控制台中,我有一个myfunc是未定义的错误
答案 0 :(得分:1)
myfunc
不是全局的-由于普通的Javascript范围规则,它仅在上方的(function ($) {
块中可见。尝试只使用一个(外部)函数,这样内部块中的任何其他内容都将能够看到myfunc
,它也位于内部块中:
(function ($) {
function myfunc(){
//some jquery codes
}
$('#btns').click(function () {
myfunc();
})
}(jQuery));
如果出于某种原因必须将功能分开,则可以将script.js
分配给window
变量:
(function ($) {
window.myfunc = function() {
//some jquery codes
}
})(jQuery);
答案 1 :(得分:0)
两种情况下都使用IIFE。 myfunc()的范围在script.js中的IIFE内,而不在全局范围内。 因此,您无法从html中的IIFE访问它。 要么不要在您的script.js中使用IIFE,要么
function myfunc(jQuery)
{
//some jquery codes
}
或在IIFE中的脚本标记中包含myfunc()。 这将有助于您更好地了解IIFEs