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

标签 javascript syntax durandal

我是javascript的新手,所以请原谅我问这样一个新手问题。我一直在尝试通过查看使用以下库 durandal、knockout js 和 breeze js、sammy 和 require 的 SPA 示例来学习 javascript 语言,我想我正在尝试使用模块模式。 我遇到过如下不同的代码语法

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 吗?

提前谢谢你。

最佳答案

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

这是否回答了您的问题?

关于javascript - 了解两种 Javascript 语法之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15278000/

相关文章:

node.js - 是否可以在同一个 Typescript 项目中混合 AMD 和 CommonJS 模块

kendo-ui - Durandal Weyland/Requirejs 优化器与 kendo ui dataviz

javascript - 能否动态地将匿名方法(函数)变成命名方法?

javascript - body 垂直滚动适配?

javascript - 为什么 Gulp 在运行依赖它的任务之前没有完成我的 'clean' 任务?

javascript - 需要帮助,推特帖子不会显示

javascript - 获取html表格中按钮的数据绑定(bind)值

objective-c - ObjC中圆括号和大括号括起来的几个语句的赋值

haskell - "@"符号在 Haskell 中引用列表时意味着什么?

c++ - 关于动态分配对象的问题