2011-02-15 78 views
1

当我使用变量some​​thing.something或this.something,我的代码工作时,我省略了var关键字:为什么global和this.something变量没有被删除?

this.something = 1; 
something.something = 1; 

,但是当我写

var this.something = 1; 
var something.something = 1; 

它不工作。

为什么?

回答

2

我想因为var需要一个有效的标识符,并且.不是一个标识符的有效字符。

它认为你想变量名称实际上是this.something,这是无效的。


当测试这两个版本时,我得到了稍微不同的错误。

this.something的人告诉我:

SyntaxError: Unexpected token this

something.something的人告诉我:

SyntaxError: Unexpected token .

同样的错误,但在第一个无效的令牌是关键字this

+0

你用var语句得到这些错误吗? 我应该说我有一个名字空间的定义 Ext.ns('something'); – ppecher 2011-02-15 18:37:48

2

您不能声明this字段(成员字段)或另一个对象的字段。这根本不是有效的语法。

您可以使用var来声明局部变量,它们可以是函数级别的,也可以是(如果您不在函数中)全局变量。正如Patrick所说,变量名不能包含句点。

0

var是声明变量的语法。在Javascript中简单地通过赋值给属性,它会将属性附加到对象。