Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery函数作用域混淆_Javascript_Jquery - Fatal编程技术网

Javascript jQuery函数作用域混淆

Javascript jQuery函数作用域混淆,javascript,jquery,Javascript,Jquery,编辑我希望该功能可以全局访问 为什么myfunction0在dom就绪调用中工作而myfunction1不工作 external.js文件 (function($) { // functions defined like that works myfunction0 = function() { console.log("hello world"); } // functions defined like that do not work

编辑我希望该功能可以全局访问

为什么myfunction0在dom就绪调用中工作而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>

$(函数(){
myfunction0();//工作正常
myfunction1();//不工作未定义
})

第一个函数定义是否具有全局作用域,而第二个函数定义仅具有局部“文件中”作用域?

您没有使用
var
关键字声明
myfunction0
,因此它已在全局作用域中声明<代码>函数声明与声明它们的范围相关联

如果您将
var
关键字添加到您的
myfunction0
(您应该这样做),您将看到这两个函数都不可访问:

var myfunction0 = function() {
  console.log("hello world");
}

将位于定义它的范围的本地。不是文件,而是它所包装的匿名函数

myfunction0 = function() { }
声明一个变量(恰好是一个函数)


因为没有
var
附加,所以该变量具有全局作用域。

因为
myfunction0
是全局的。因为之前没有关键字“var”,所以不要隐式声明变量,始终使用
var
关键字。@Vohuman您能详细说明一下吗@atmd这不是一个$(函数
myfunction0 = function() { }