Javascript 命名IIFE名称的范围
我原以为我了解立即调用函数表达式(IIFE)的本质,但现在我意识到我不了解 我在一段代码中创建了一个IIFE(在网页中使用JQuery)。但是,如果我命名该函数,并尝试从封闭范围调用该函数,会出现“undefined”错误 IE11和Firefox38中的实时代码表现不同,这使得事情变得更加混乱。然而,我在这里创建了一个简单的测试JSFIDLE- 这在浏览器之间是一致的 我以为这两行-Javascript 命名IIFE名称的范围,javascript,scope,iife,Javascript,Scope,Iife,我原以为我了解立即调用函数表达式(IIFE)的本质,但现在我意识到我不了解 我在一段代码中创建了一个IIFE(在网页中使用JQuery)。但是,如果我命名该函数,并尝试从封闭范围调用该函数,会出现“undefined”错误 IE11和Firefox38中的实时代码表现不同,这使得事情变得更加混乱。然而,我在这里创建了一个简单的测试JSFIDLE- 这在浏览器之间是一致的 我以为这两行- (function myFunction2() { ... (myFunction3= fu
(function myFunction2() {
...
(myFunction3= function() {
...
它们几乎是等价的,但我只在“myFunction2”上得到了一个未定义的错误
我很感激你能帮我理解-
1) 为什么(函数myFunction2(){…正在隐藏函数的名称及其内部作用域。该名称的作用域是什么
2) 为什么上面的myFunction2和myFunction3行为不同
RGD命名函数表达式只创建一个变量,该变量:
- 与函数具有相同的名称
- 具有一个引用该函数的值
myFunction3
)
函数声明在其父作用域中创建类似的变量。它们不会作为任何东西进行计算(因为它们不是表达式).IIFE是一个括在括号中的函数,在括号外不可用。尽管您可以在括号内调用它们。您不能执行
testObject.newFunction2=myFunction2;
,它在括号外不可见。什么,IE11仍然没有修复此IE6错误?