这次来探讨顺序的先后问题,比较 function 跟变数,有何差异性
假设以下情况:
console.log(a); var a; console.log(a); a = 10; console.log(a);
这时候在 console 会输出什么呢 ?
答案是:
显示错误
undefinded
10
这里说明一下
第一行 console 因为我们前面并未宣告此变数,所以显示错误
第二行,我们宣告了变数 a 但并未赋予值
所以第三行会显示 undefinded
第四行,变数 a 赋予了值 10
所以第五行,才会输出 10
所以当我们在撰写变数的顺序时,一定会先宣告且赋予值,才会去做计算或者输出
这样的情况,当拿来 function 的时候,又会如何?
程式码如下:
greet();function greet(){ alert('hello');}
我们先呼叫greet();
函式,才去宣告函式 greet()
按照上述变数的逻辑,在 function 是否会出现错误?
其实是不会的,这是因为当 JavaScript 在执行时,会先把宣告的函式都先自动移到最前面
所以读取时顺序会是:
function greet(){ alert('hello');}greet();
但通常大部分的人在撰写 JavaScript 时,都会自动把宣告的函式写在最前面
所以在 JavaScript 的世界里,顺序是很重要的,都有可能是造成错误的其中原因之一。