6

首先使用 var

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

第二个使用这个

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

2 回答 2

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"

参考:

  • JavaScript中的私有成员,Douglas Crockford 着
于 2012-08-23T15:08:48.337 回答
2

如果将这些函数用作函数,则 this 关键字将使变量变为静态。如果函数被调用两次,this.something 仍然有它的值,而第一个主题将在函数完成执行后擦除变量数据。

如果您将它们用作类构造函数,则 var 将定义一个私有变量,这将声明一个公共变量。

看到这个小提琴:http: //jsfiddle.net/UUFuX/1/

于 2012-08-23T15:19:54.237 回答