我是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;
}
});
我的问题是
- 使用一种语法是否有优势?
- 上面代码块中的变量“model”是否具有全局作用域?
- 从函数内部访问“title”变量的最佳方式是什么?我应该使用 this.title 吗?
提前谢谢你。
最佳答案
- 语法 2 更易于阅读。它不是将它分配给一个变量并立即返回它,而是只返回值。除此之外,没有任何优势。
- “model”变量将不具有全局范围,因为它是在此特定上下文中定义的。
- 在返回的对象上,通过 objName.title 调用 title
这是否回答了您的问题?
关于javascript - 了解两种 Javascript 语法之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15278000/