2014-06-10 90 views
0

我已經繼承了一段代碼,我需要確認我正確理解它。我(很明顯)不是 JavaScript專家,但我試圖。我只是需要一些幫助理解到底是什麼的下面的代碼塊是這樣做的:Javascript表示法。需要幫助理解這個聲明

SG_VERSION = "2.1", fss = [], allAni = {}, SG_PATH = "", sgZoom = 1, SG = function() { 

    function complete() { ... } 

    function Game() { ... } 

    function win() { ... } 

    function resize() { ... } 

我的理解是,SG_VERSION是一個「對象」的一些成員變量和一個名爲SG大的方法,它本身具有的成員函數? 但是SG_VERSION不需要'var'嗎?

感謝您的任何見解。我很欣賞任何和所有的幫助,但看起來很簡單。

+0

這只是一大堆全局變量。 (如果* var *故意遺漏)。 – Yoshi

+0

SG_VERSION是全局變量,這些變量在聲明之前不需要'var'。 – aksu

回答

2

根據您的片斷,這些似乎是全局變量(假設你沒有錯過一個初始var,他們並沒有在外部函數內聲明(){}),

SG_VERSION = "2.1" // probably a string version representation 
fss = [] // empty array initialization 
allAni = {} // empty object initialization 
SG_PATH = "" // probably to hold string values representing a PATH 
sgZoom = 1 // numeric zoom level? 
SG = function() {} // a function that seems to be intended for use as a class containing "private" functions complete(), Game(), win() and resize(). 

對於最後一個變量SG =我想你已經錯過了你的副本一個右括號/粘貼

+1

即使在一個或任何數量的函數中,沒有* var *,它們都是全局的。 (雖然可能有這樣的情況,其中一個或所有可能已經用* var *在其中一個外部函數中聲明瞭,在這種情況下它們不是全局的)。不知道這是你在第一句中的意思,雖然。 – Yoshi

+2

另外我不會叫SG一個'對象'。當然,它是一個「對象」,但更具體地說,它是一個功能。它最有可能被稱爲'SG()'或'new SG',不像'SG.x = 5'那樣使用。 – Paulpro

+0

@Yoshi是啊,它看起來像OP錯過了片段中的一些東西,所以這就是爲什麼我在我的第一行添加。 –

-1

如果這樣寫這將是更具可讀性:

var SG_VERSION = "2.1"; 
var fss = []; 
var allAni = {}; 
var SG_PATH = ""; 
var sgZoom = 1; 

var SG = function() {...}; 

function complete() { ... } 

function Game() { ... } 

function win() { ... } 

function resize() { ... }