了解两种Javascript语法之间的差异

时间:2013-03-07 17:38:23

标签: javascript syntax durandal

我是javascript的新手,请原谅我提出这样一个新手问题。我一直在尝试通过查看SPA示例来学习javascript语言,这些示例使用以下库durandal,knockout js&微风js,sammy&我认为需要并尝试使用Module模式。 我遇到了不同的代码语法如下

define(['services/logger'], function (logger) {

    var model = "somedata"
    var vm = {
        activate: activate,
        title: 'Details View'
    };

    return vm;
    function activate() {
        logger.log('Details View Activated', null, 'details', true);
        return true;
    }
});

define(['services/logger'], function (logger) {

        var model = "somedata"

    return {
        activate: activate,
        title: 'Details View'
    };

    function activate() {
        logger.log('Details View Activated', null, 'details', true);
        return true;
    }
});

我的问题是

  1. 使用一种语法是否有优势?
  2. 上面代码块中的变量“model”是否具有全局范围?
  3. 从函数中访问“title”变量的最佳方法是什么?我应该使用this.title吗?
  4. 提前谢谢。

1 个答案:

答案 0 :(得分:1)

  1. 语法2更易于阅读。它不是将它分配给变量并立即返回,而是返回值。除此之外,没有任何优势。
  2. “model”变量不具有全局范围,因为它在此特定上下文中定义。
  3. 在返回的对象上,您通过objName.title
  4. 调用title

    这会回答你的问题吗?