属性函数的 JavaScript 初始值
javascript initial value of property function
foo.js
var bar = function () { return "hello world"; }
module.exports = {
bar: bar
}
测试.js
var foo = require("foo.js");
var greeting1 = foo.bar;
var greeting2 = foo.bar();
var greeting3 = foo.bar;
问候1,问候2,问候3在所有的事物中都有价值"你好世界"吗?
询问是因为如果存在 foo.bar 最初未定义的情况,因为它尚未初始化并且仅在调用 foo.bar() 时初始化怎么办。
你在这里似乎有两个问题。
问候1,问候嗯,不2,问候3在所有的事物中都有价值"你好世界"吗?
,不完全是。greeting1
和 greeting3
变量包含一个函数,foo.bar
。只有greeting2
包含字符串,"hello world"
.在其他两种情况下,您没有自动调用该函数,只是引用它并将其存储在变量中。
询问是因为如果存在 foo.bar 最初未定义的情况,因为它尚未初始化并且仅在调用 foo.bar() 时初始化,该怎么办。
Node.js 保证foo.bar
将在您使用时初始化。require
函数是同步的 - 它会阻塞,直到加载请求的模块。因此,无需担心初始化,因为 Node 会为您处理。
greeting1
和greeting3
是函数(它们都指向foo.js模块中的bar
函数)。
而greeting2 === "hello world"
是因为它是执行该bar
函数的返回结果。
这是因为您在某些地方使用foo.bar
,而在其他地方使用foo.bar()
。 一个只是获取函数,最后带有()
的函数实际上执行函数。
为了以更简单的方式查看结果,让我们删除模块。 您的代码等效于以下内容:
var foo = {
bar: function() { return "hello world"; }
};
var greeting1 = foo.bar; // contains a function reference
var greeting2 = foo.bar(); // contains "hello world" because it executed the function
var greeting3 = foo.bar; // contains a function reference
你问题的最后一句话非常令人困惑。 如果foo.bar
最初没有值(例如,它是未定义的),那么在它有值之前,你不能执行foo.bar()
。 也许您需要向我们展示真实的代码以及foo.bar
实际上是如何初始化的。 在您的问题中,它始终具有初始值。
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别