[英]javascript object literal and self-executing functions
我正在研究 Javascript 中的 object 文字和自執行函數。 通過一些 YUI 代碼,我發現了一些可以自行執行的 object 文字的方法。 我的問題是為什么下面的代碼沒有提醒'Ohai Mark;';
var bar = {
alert: function () {
window.alert('Ohai Mark!');
},
init: (function () {
bar.alert();
}())
};
詳細解釋:
> var bar = {
在 javascript 中,首先處理聲明,因此bar在執行開始之前作為變量存在。
> alert: function () {
> window.alert('Ohai Mark!');
> },
> init: (function () {
> bar.alert();
> }())
bar將在評估右側的表達式后分配一個值。 在該評估期間, bar具有到達語句(整行)時的任何值。 它當前是undefined ,因此它還沒有alert屬性。
> };
執行代碼時,“bar”已定義但尚未分配結果 JSON object 在定義 init() 方法的點(並且即將分配給bar對象) [EDITED] 。 由於正確定義了 init 的函數范圍,我將在那里聲明 function,如下所示:
var bar = {
init: (function () {
var alert = function () {
window.alert('Ohai Mark!');
};
alert(); //this will execute the code above
}())
};
請參閱Javascript Garden#namespaces and scopes 。 [編輯]你可能認為這類似於:
(function() {
var c = c + 1;
})();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.