【发布时间】:2014-06-13 15:36:01
【问题描述】:
我正在关注 Douglas Crockford 关于 JavaScript 变量和函数可见性的教程:http://javascript.crockford.com/private.html
我已经编写了以下 MyClass.js 文件,我正在使用节点从终端运行它。下面我在终端和我的班级上显示我的输出。我不明白为什么我会返回一个“未定义”(而不仅仅是真的),为什么我的 console.log(log) 没有显示在任何地方?
$ node MyClass.js
undefined
true
还有我的班级
function MyClass(log)
{
this.log = log;
var that = this;
function _evaluate (log)
{
console.log(log);
return true;
};
this.evaluate = function()
{
return _evaluate() ? true : false;
};
}
var myObject = new MyClass('this is a test');
console.log(myObject.evaluate());
【问题讨论】:
-
你得到
undefined,因为你没有将参数传递给_evaluate,因此log在函数内部是undefined。不确定预期的结果是什么...只需删除参数? -
为什么
_evaluate函数有参数?由于它与构造函数的参数 (log) 具有相同的名称,因此它被隐藏了......并且由于您调用_evaluate()(无参数),它具有undefined值。尝试做console.log(that.log);(没有log函数的log参数)
标签: javascript node.js private privacy