函数表达式中的变量

时间:2013-06-20 23:26:54

标签: javascript jquery function expression frontend

过去几天我对javascript中函数表达式和声明的区别有很多了解。大多数时候它说函数表达式是在javascript中创建函数的首选方法。有时它说相反,所以我不确定,但我暂时保留表达式。

但有一点关于我无法找到的表达式作为例子。这可能是一个愚蠢的问题,但我真的很想知道。让我们假设我们有一个像

这样的函数表达式
var nav = {
    init: function() {
        // Code
    }, 
    open: function() {
        // Code
    },
    close: function() {
        // Code
    }
};

在这种情况下,它是下拉导航或其他功能。您应该能够打开和关闭它,就像一个例子。现在我问你,我如何在该代码中定义变量,所以我可以在“open”,“close”和“init”函数中使用它们?在那种特殊情况下,我可能需要变量:

var
    $nav = $(".nav"),
    navHeight = $nav.height(),
    navTest = "Test";

你通常会这样做吗?可能是这些问题已在其他地方得到解答,但我真的找不到任何东西,可能是因为我搜索了错误的关键词。

如果有人能解释我/给我一个教程的链接 - 对于一个javascript函数初学者我会非常感激:)

谢谢:)

2 个答案:

答案 0 :(得分:1)

好吧,您正在创建函数作为对象nav的属性。您可以简单地将变量作为其他属性与这些函数一起添加。

var nav = {
    myHeight: 12,
    height: function() {
        return this.myHeight;
    },
    increaseHeight: function(howMuch) {
        this.myHeight += howMuch;
    }
    init: function() {
        // use this.myVariable here
    }, 
    // ...
};

答案 1 :(得分:1)

您可以将共享变量保留在闭包中,使其对您的对象方法保密。常见的技术是module pattern

您可能也对Private Members in Javascript感兴趣。