84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
javascriptfunction fn(a) { console.log(a); var a = 2; function a() {} console.log(a); } fn(1);
javascript
function fn(a) { console.log(a); var a = 2; function a() {} console.log(a); } fn(1);
为什么会先输出function a() {} 再输出2?
欢迎选择我的课程,让我们一起见证您的进步~~
var和function是会提前声明的,而且function是优先于var声明的(如果同时存在的话),所以提前声明后输出的a是个function,然后代码往下执行a进行重新赋值了,故第二次输出是2。
未赋值的函数会被提升到前面; 写代码的时候经常会这样写是正确的;
abc();//输出abc function abc(){console.log("abc")};
但是把函数赋值给变量就会出错
abc(); var abc = function(){console.log("abc")}
function a(){} 这是声明一个函数,var a=function(){}这是一个函数表达式,函数声明会优先加载,输出顺序同楼上所说。
var和function是会提前声明的,而且function是优先于var声明的(如果同时存在的话),所以提前声明后输出的a是个function,然后代码往下执行a进行重新赋值了,故第二次输出是2。
未赋值的函数会被提升到前面;
写代码的时候经常会这样写是正确的;
但是把函数赋值给变量就会出错
function a(){} 这是声明一个函数,var a=function(){}这是一个函数表达式,函数声明会优先加载,输出顺序同楼上所说。