var a = 0;
if(1) {
console.log('1=>', a);
a = 1;
console.log('2=>', a);
function a() {};
console.log('3=>', a);
a = 21;
console.log('4=>', a);
}
console.log('5=>', a);
##打印结果:
var a = 0;
if(1) {
console.log('1=>', a);
a = 1;
console.log('2=>', a);
function a() {};
console.log('3=>', a);
a = 21;
console.log('4=>', a);
}
console.log('5=>', a);
##打印结果:
因为你的 function a() {};放置的位置引起的a不同;
1.function a() {}之前的a是一个变量,a=0;a=1;
console.log('1=>', a);
a = 1;
console.log('2=>', a);
function a() {};
2.function a() {}之后的a是一个方法,这个方法等于a
function a() {};
console.log('3=>', a);
a = 21;
console.log('4=>', a);
但是你的if(1)外面又打印了一个console.log('5=>', a);,这时候的a是一个变量来的,这时候的a就等于function a() {};之前最近的一个a=1;
举个例子,假如你在
a = 1;
console.log('2=>', a);
function a() {};
这里改成,增加了一个a=2;
a = 1;
console.log('2=>', a);
a = 2;
function a() {};
那最后console.log('5=>', a); 会打印出a=2;
总的来说,你的a 到底是想要当成参数还是要当成方法来用,如果要当成方法,就把 function a() {};放在if(1)外面;
ps:方法名和参数的命名最好是区分开来