首先使用var
function testCode(some)
{
var something = some;
}
第二个使用此
function testCode2(some)
{
this.something = some ;
}
答案 0 :(得分:3)
在第一个函数中,something
是私有(本地)变量,这意味着它在函数外部将完全无法访问;而在第二个它是一个公共实例变量。设置变量的上下文将取决于您调用函数的方式:
> testCode2("foo"); // this will refer to document.window
> something
"foo"
>> var obj = new testCode2("foo"); // this will refer to the new object
>> something
ReferenceError: something is not defined
>> obj.something
"foo"
答案 1 :(得分:2)
如果这些函数用作函数,则this关键字将使变量成为静态。如果函数被调用两次,则this.something仍将具有其值,而第一个主题将在函数执行完毕后擦除变量数据。
如果您将它们用作类构造函数,var将定义一个私有变量,这将声明一个公共变量。
看到这个小提琴:http://jsfiddle.net/UUFuX/1/