什么在函数中创建函数?

时间:2016-10-23 13:13:41

标签: javascript

为什么以下代码1的结果而不是10?为什么函数bar()没有改变值,即使有一个return语句。

var foo = 1;
function bar() {
  foo = 10;
  return;

  function foo() {}
}

bar();
alert(foo);

2 个答案:

答案 0 :(得分:3)

这是因为在foo内编译bar函数声明时,bar位于var foo = 1; function bar() { function foo() {} foo = 10; return; } bar(); alert(foo); 的顶部。喜欢这个

rsync://mirrors.standaloneinstaller.com/vim/

了解hoisting in JS。 并在“var hoisting”部分中here

答案 1 :(得分:3)

这是因为bar()定义被提升到其范围的顶部,因此FILE* input; int k=0; char filename[]=""; int* Tab=NULL; printf("Please specify the filename you want to open and read\n"); scanf("%s",&filename); //strcat(filename,".txt"); input=fopen(filename,"r"); if(input==NULL) { printf("File open error"); } fscanf(input,"%d",&total); Tab=malloc(total); for(k=0;k<total;k++)// here is my problem { fscanf(input,"%d",&Tab[k]); } 内的foo赋值实际上是指具有空主体的本地函数。

您可以阅读有关此here

的更多信息