我認爲這樣做:的Javascript範圍古怪,功能和瀏覽器
var what = function() {};
這
function what() {}
是JS同樣的事情,因爲功能應該是「第一類對象」 。
今天筆者瞭解到,在Firefox這個代碼:
var test = true;
if (test) {
function what() {
alert("foo");
}
} else {
function what() {
alert("bar");
}
}
what();
顯示FOO,和奇怪的原因鍍鉻顯示條...爲什麼[頭號]? 這樣做:
var test = true, what;
if (test) {
what = function() {
alert("foo");
}
} else {
what = function() {
alert("bar");
}
}
what();
解決了這個問題..爲什麼[第二]? 你可以在這裏嘗試一下http://jsfiddle.net/7cbs5gr7/
[摘要]我有兩個問題:
- 爲什麼Chrome和Firefox行爲方式上呢? - 另外一個:至少一個是對的? -
- 爲什麼在var中顯式設置函數解決了問題?
我聞到吊裝的有一個古怪的問題。似乎Firefox並沒有像Chrome那樣提升功能體。在'var'中設置函數可能會迫使這種提升方式解決問題。總是提起'var'聲明的另一個好理由! –