2012-09-20 141 views
0

在jQuery中,可以創建一個函數來設置一個變量,然後我可以在另一個函數中訪問該變量。即我需要一個全局變量,可以訪問頁面上的任何地方。jquery中的全局變量

例子

$.fn.getRedemptionID = function(){ 
    var myVar = data.DATA[0].item1; 
} 
+0

定義你的變量超出函數的範圍,它是全局的。 – undefined

回答

3

1)全局變量是壞的。

2)是:

// explicit global (preferred) 
$.fn.getRedemptionID = function(){ 
    window.myVar = data.DATA[0].item1; 
} 

// implicit global 
$.fn.getRedemptionID = function(){ 
    myVar = data.DATA[0].item1; 
} 
+0

全局變量不好<爲什麼? – Prometheus

+1

@Spike我會允許有人比我更聰明地回答:http://blogger.ziesemer.com/2007/10/respecting-javascript-global-namespace.html – jbabey

+1

@Spike:因爲它太容易了有不同的圖書館和使用相同的名稱,如果他們都是全球性的,他們會衝突。更糟的是,由此產生的錯誤是一個*噩夢*,因爲它們依賴於兩個被認爲是獨立的東西的相互作用。 – KRyan

0

只是這樣做:

var myGlobalVar = null; 

$.fn.getRedemptionID = function(){ 
    myGlobalVar = data.DATA[0].item1; 
} 

然後你就可以隨時隨地訪問myGlobalVar :)

0

jQuery的仍然是JavaScript和仍然可以像JavaScript使用。即如果你在任何塊之外聲明瞭某些東西,它就是全局的,可以在任何地方訪問。

E.g.

var global = 42; 
$(document).ready(function() { 
    global = $('#something').val(); 
}); 
0

一個更好的辦法是使用關閉,以節省通過以下方式您的變量值:

var application = (function(){ 
    var my_var; 

    return { 
     get_var: function(){ 
      return my_var; 
     }, 
     set_var: function(value){ 
      my_var = value; 
     } 
    } 
})(); 

application.set_var(34); 
application.get_var; 

這比使用全局變量更好。