2011-04-21 67 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