编辑我希望该功能可以全局访问
为什么myfunction0在dom ready调用中工作而myfunction1不起作用?
external.js文件
(function($) {
// functions defined like that works
myfunction0 = function() {
console.log("hello world");
}
// functions defined like that do not work
function myfunction1() {
console.log("hello world");
}
})(jQuery);
的index.html
<script>
$(function () {
myfunction0(); // works
myfunction1(); // does not work not defined
})
</script>
第一个函数定义是否获得全局范围,而第二个函数定义只是一个本地文件&#39;范围?
答案 0 :(得分:1)
您尚未使用myfunction0
关键字声明var
,因此已在全局范围内声明它。 function
声明与声明它们的范围有关。
如果您将var
关键字添加到myfunction0
(您应该这样做),您会发现这两种功能都无法访问:
var myfunction0 = function() {
console.log("hello world");
}
答案 1 :(得分:1)
function myfunction1() { }
将是其定义范围的本地。不是文件,而是它包含的匿名函数。
myfunction0 = function() { }
声明一个变量(恰好是一个函数)。
由于没有附加var
,该变量获得全局范围。