在Javascript中'var'声明的变量和'this'创建的属性之间有什么区别?

时间:2012-08-23 15:03:08

标签: javascript

首先使用var

 function testCode(some) 
    {
         var something = some;
    }

第二个使用此

function testCode2(some) 
{
     this.something = some ;
}

2 个答案:

答案 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/