function fn(a) { console.log(a); } fn(1); //输入1
1-----输出1,想必大家都没有任何的问题。将1作为参数引入函数中,自然得到1
function fn(a) { var a=5; console.log(a); } fn(1); //输出5
2-----输出5,虽然在一开始在参数中a=1,但执行函数的时候,a又重新赋值了。a=5,自然就输出5
function fn(a) { console.log(a); var a=5; } fn(1); //输出1
3-----输出1,还未遇到var a=5的时候,就已经打印输出了。
function fn(a) { console.log(a); var a=5; function a(){}; } fn(1); //输出ƒ a(){}
相当于这样:
function fn(a) { function a(){}; console.log(a); var a=5; } fn(1); //输出ƒ a(){}
4-----输出f a(){},Var和函数,函数是会优先提升的,执行function a(){},此时a()函数相当于变量使用。打印输出a,自然就是打印出函数 f a(){}
function fn(a) { console.log(a); var a=5; function a(){}; console.log(a); } fn(1); //输出ƒ a(){} //输出5
上面这个,相当于这样:
function fn(a) { function a(){}; console.log(a); var a=5; console.log(a); } fn(1); //输出ƒ a(){} //输出5
5-----虽然一开始var a=5是在function a(){}之前,但函数和变量同时存在的话, 是会先将函数提升上去,也就是移上去。
var a=1; function test(){ console.log(a); var a=1; } test(); //undefined
6-----全局变量是1,但进不去函数里面。函数里面变量在这里是不会提升的。直接输出没有定义没有赋值的a,自然就是undefined
function test(){ var a; console.log(a); a=1; } //undefined,未赋值
7-----var a;没有赋值,自然就是undefined
var b=2; function test2(){ window.b=3; console.log(b); } test2(); //38-----任何通过附加在window上的变量都相当于声明一个全局变量,或者是给全局变量赋值
var b=2; function test2(){ console.log(b); } test2(); //29-----函数里面没有变量,函数便会往外面寻找
var b=2; function test2(){ console.log(b); var b=3; } test2(); //undefined上面这个,其实执行的就是这样子的:
function test2(){ console.log(b); } test2(); //undefined10-----就是酱紫。
c=5; function test3(){ window.c=3; console.log(c); var c; console.log(window.c); } test3(); // 3 x // 5 x这一题有些难度,我一开始做的时候,也以为是3和5 原谅偶,老夫也是前端小白。其实下面的答案是
c=5; function test3(){ window.c=3; console.log(c); var c; console.log(window.c); } test3(); // undefeined // 3我一开始以为这段代码简化是这样的:
function test3(){ var c; console.log(c); window.c=3; console.log(window.c); } test3(); // undefeined // 3
但其实,这是错的。真的的执行过程应该是下面这样
c=5;//声明一个全局变量c function test3(){ var c;//变量声明提升,声明一个局部变量 window.c=3;//改变全局变量c的值 console.log(c);//由于此时的c是一个局部变量c,并且没有被赋值 c就是undefined console.log(window.c);//此时的c就是一个全局变量c,也就是值为3 } test3();
希望对大家有所帮助,也多多关注老夫。小埋咕噜咕噜喝下一瓶可乐......