Javascript函数定义

时间:2010-05-07 18:12:36

标签: javascript syntax

我想知道为什么在这个自执行javascript函数中定义的Vector变量在它之前不需要var?这只是用于创建命名函数的其他类型的语法吗?这是否成功,我们不能将Vector作为参数传递给其他函数?

(function() {
    Vector = function(x, y) {
        this.x = x;
        this.y = y;

        return this;
    };

   //...snip   
})()

4 个答案:

答案 0 :(得分:3)

上面的代码构造使Vector成为命名空间中的全局变量,这可能没问题,因为它可能用作构造函数。

我不建议添加到全局名称空间,实际上看看requirejs这是使用模块化JS的一种非常好的方式。

答案 1 :(得分:2)

定义不带var的变量使其成为全局变量。

答案 2 :(得分:2)

以任何其他方式定义Vector只会在闭包范围内创建它;并且不会在关闭之外提供。

(function() {
    var Vector = function(x, y) {
        this.x = x;
        this.y = y;

        return this;
    };

    function Vector() {
        // blah
    };

   //...snip   
})()

var something = new Vector() // ERROR :<

没有“需要”var关键字;使用它定义变量可用的范围。不使用它意味着变量是在全局范围内创建的。

答案 3 :(得分:1)

在这种情况下,

Vector将附加到当前this window。至少在您提供的代码中,似乎不需要封闭的自执行功能。