Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 命名IIFE名称的范围_Javascript_Scope_Iife - Fatal编程技术网

Javascript 命名IIFE名称的范围

Javascript 命名IIFE名称的范围,javascript,scope,iife,Javascript,Scope,Iife,我原以为我了解立即调用函数表达式(IIFE)的本质,但现在我意识到我不了解 我在一段代码中创建了一个IIFE(在网页中使用JQuery)。但是,如果我命名该函数,并尝试从封闭范围调用该函数,会出现“undefined”错误 IE11和Firefox38中的实时代码表现不同,这使得事情变得更加混乱。然而,我在这里创建了一个简单的测试JSFIDLE- 这在浏览器之间是一致的 我以为这两行- (function myFunction2() { ... (myFunction3= fu

我原以为我了解立即调用函数表达式(IIFE)的本质,但现在我意识到我不了解

我在一段代码中创建了一个IIFE(在网页中使用JQuery)。但是,如果我命名该函数,并尝试从封闭范围调用该函数,会出现“undefined”错误

IE11和Firefox38中的实时代码表现不同,这使得事情变得更加混乱。然而,我在这里创建了一个简单的测试JSFIDLE-

这在浏览器之间是一致的

我以为这两行-

  (function myFunction2() {
   ...

  (myFunction3= function() {
   ...
它们几乎是等价的,但我只在“myFunction2”上得到了一个未定义的错误

我很感激你能帮我理解-

1) 为什么(函数myFunction2(){…正在隐藏函数的名称及其内部作用域。该名称的作用域是什么

2) 为什么上面的myFunction2和myFunction3行为不同


RGD

命名函数表达式只创建一个变量,该变量:

  • 与函数具有相同的名称
  • 具有一个引用该函数的值
在它们自己的范围内。它们还作为该函数的引用进行计算,以便您可以将该引用传递到某个位置(例如,将其分配给
myFunction3


函数声明在其父作用域中创建类似的变量。它们不会作为任何东西进行计算(因为它们不是表达式).

IIFE是一个括在括号中的函数,在括号外不可用。尽管您可以在括号内调用它们。您不能执行
testObject.newFunction2=myFunction2;
,它在括号外不可见。什么,IE11仍然没有修复此IE6错误?