function t(flag){
if(flag){
s="ifscope";
for(var i=0;i<2;i++);
}
console.log(i);
}
t(true);
console.log(s);
不太理解这段代码什么意思。
为什么加上t(true);
后,最后一句就可以执行了?不加的话,就会报错?
function t(flag){
if(flag){
s="ifscope";
for(var i=0;i<2;i++);
}
console.log(i);
}
t(true);
console.log(s);
不太理解这段代码什么意思。
为什么加上t(true);
后,最后一句就可以执行了?不加的话,就会报错?
首先要明确,在未声明变量时,想要打印出变量的值是会报错的。
其次,要明白执行t(true)
后会声明一个全局变量s
,值为ifscore
。
我想这样就能明白,加上t(true)
不会报错,而不加会报s is not defined(…)
的错误了
function t(flag){
if(flag){
s="ifscope";
for(var i=0;i<2;i++);
}
console.log(i);
}
t(true);//这是你调用函数的,你没有调用,里面的代码自然不会执行,不执行,s就没有声明,然后你console.log(s)就自然找不到s咯,找不到就报错 s is not defined咯。
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
变量s前面没有var,为全局变量
题主可以试着看一下控制台console的英文报错
