2011-04-21 95 views
1

我讀的Javascript好的部分,並在第5章繼承跨越下面的代碼片段來了:JavaScript語法需要一些解釋

var coolcat = function (spec) { 
    var that = cat(spec), 
      super_get_name = that.superior('get_name'); 
    that.get_name = function (n) { 
    return 'like ' + super_get_name() + ' baby'; return that; 
    } 
    } 

我對昏迷的貓(SPEC)之後在第2行困惑是什麼該行確切地做? (行2 + 3號線) 感謝

回答

5

這只是聲明瞭兩個快捷鍵變量在一個語句中,它等同於:

var that   = cat(spec); 
var super_get_name = that.superior('get_name'); 

comma is actually an operator在JavaScript中:

逗號運算符評估它的兩個操作數(從左到右)並返回第二個操作數的值。

var語句是由形式的一個或多個表達式的:

varname [= value] 

其中方括號表示任選的組分。一般var statement看起來是這樣的:

VAR varname1 [=值[,varname2 [,... varname3 [,varnameN]]]];

,你通常只能看到var報表和for loops使用逗號運算符:

for(var i = 0, x = complicated_array[0]; i < complicated_array.length; x = complicated_array[++i]) 

但它可以在其他地方使用。

+1

'var x = y;'是一個語句,但它*包含*表達式('y')。但是,var語句中的表達式不能包含逗號運算符。 – 2011-04-21 22:05:00

+0

@Šime:但是整個陳述並不是一個表達式,所以我對如何向初學者正確解釋這些細節有點不確定。我的最新更新更清晰/更準確嗎? – 2011-04-21 22:24:11

2

縮進是錯誤的,它應該是:

var that = cat(spec), 
    super_get_name = that.superior('get_name'); 

這是相同的話說:

var that = cat(spec); 
var super_get_name = that.superior('get_name'); 
3

它可以讓你聲明另一個變量。它相當於以下內容:

var that = cat(spec); 
var super_get_name = that.superior('get_name'); 

請參閱var statement docs @ MDC

+0

哦,他做到了。編輯問題的人是偷偷摸摸的。 – Raynos 2011-04-21 21:45:19