为什么以下代码1的结果而不是10?为什么函数bar()没有改变值,即使有一个return语句。
var foo = 1;
function bar() {
foo = 10;
return;
function foo() {}
}
bar();
alert(foo);
答案 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
的更多信息