2016-04-28 41 views
0

有人可以向我解釋爲什麼這不起作用,並告訴我如何使它工作?我試過創建一個命名空間和IIFE功能,但我似乎無法得到它。

$(document).ready(function() { 
    alert (hi); 
}); 

$(document).ready(function() { 
    var hi = "hello" 
}); 

謝謝!

回答

4

當你這樣做:

$(document).ready(function() { 
    var hi = "hello" 
}); 

你正在創建一個名爲hi變量是局部的回調函數。它在該功能之外根本無法訪問。這是該語言的一個特點。

您可以在更高範圍內像這樣聲明變量:

var hi; 
$(document).ready(function() { 
    hi = "hello" 
}); 

而且,當時該變量的值將是可用的範圍之外,但你不一定知道當它得到正確的值因爲除非將代碼放入回調函數中,否則不會知道何時調用$(document).ready()回調函數。


試圖在兩個調用$(document).ready()之間共享一個變量是沒有意義的。它將使更多的意義,只是把代碼相同$(document).ready()回調中:

$(document).ready(function() { 
    var hi = "hello" 
    alert (hi); 
}); 

並不推薦

如果你要嘗試兩次調用之間共享變量$(document).ready()(我沒有真正推薦,因爲它會讓你的代碼有些脆弱),它可以完成。回調$(document).ready()將它們連接的順序進行調用,所以你將不得不適當地訂購的東西:

var hi; 
$(document).ready(function() { 
    hi = "hello" 
}); 

$(document).ready(function() { 
    alert (hi); 
}); 

這將確保第一$(document).ready()回調設置的hi值將被第二前先叫一個你試圖使用的價值。

+0

甜,這就是我想要投票。 – BlunderCode

+0

@ jfriend00檢查 – BlunderCode