我們知道聲明變量是會提升的:var a = 1;//上面一行相當于下面這樣:
var a;
a = 1;同時,函數聲明也是會被提升的:foo();function foo(){};//上面兩行相當于下面這樣:
var foo;
foo = function (){};
foo()那么,變量和函數聲明都有時,誰會提升到更上面呢?怎么排序呢?比如下面這樣:var a = 1;
foo();function foo(){};是這樣嗎?var a;var foo;
a = 1;
foo = function(){};
foo();因為在《你不知道的JAVASCRIPT》看到這句話,有點困惑:函數聲明和變量聲明都會被提升。但是一個值得注意的細節是,函數會首先被提升,然后才是變量。函數聲明會被提升到普通變量之前。所以說會是這樣排序嗎:var foo;
foo = function(){};var a;
a = 1;
foo();求解排序規則,謝謝!
函數聲明和聲明變量同時存在,提升的規則是什么?
慕容森
2018-11-07 10:18:45