Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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_Iife - Fatal编程技术网

Javascript 为什么记录的是命名的IIFE而不是同名的变量?

Javascript 为什么记录的是命名的IIFE而不是同名的变量?,javascript,iife,Javascript,Iife,我看到下面有人贴的代码。我不知道它记录了什么。它记录函数a,而不是200。为什么? var a=1; (职能a(){ a=200; 控制台日志(a) })()因为立即调用的函数是命名的,并且不能重新分配该名称以直接引用IIFE中的其他内容 任何命名函数表达式也将显示此行为。函数名为A的函数表达式将意味着直接在函数内部的A将始终引用函数本身,即使您尝试重新分配它 如果使用严格模式,则可以明确错误: “严格使用”; var a=1; (职能a(){ a=200; 控制台日志(a) })()如果有

我看到下面有人贴的代码。我不知道它记录了什么。它记录函数
a
,而不是
200
。为什么?

var a=1;
(职能a(){
a=200;
控制台日志(a)

})()
因为立即调用的函数是命名的,并且不能重新分配该名称以直接引用IIFE中的其他内容

任何命名函数表达式也将显示此行为。函数名为
A
的函数表达式将意味着直接在函数内部的
A
将始终引用函数本身,即使您尝试重新分配它

如果使用严格模式,则可以明确错误:

“严格使用”;
var a=1;
(职能a(){
a=200;
控制台日志(a)

})()
如果有人想知道生命是什么?然后它的立即调用的函数表达式或自动执行的匿名函数,您可以指出有关此行为的一些规范。首先,我怀疑它不需要“立即调用”
setTimeout((函数a(){a=200;console.log(a)}),1000)
也会起同样的作用。明白了,正如我所怀疑的,它适用于所有命名的函数表达式,而不仅仅是即时调用的函数表达式(我认为这在语言中不是一件事,只是一种用法)