我对Javascript变量声明有疑问。 你能否告诉我以下两种定义方式有什么区别? 为什么alertMsg将以第一种方式执行而不是以第二种方式执行? 提前谢谢。
// 1
var alertMsgInvoker = alertMsg ('hi there');
function alertMsg (msg) {
alert(msg);
}
// 2
var alertMsgInvoker = function () {
alertMsg ('hi there');
}
function alertMsg (msg) {
alert(msg);
}
答案 0 :(得分:3)
你永远不会在第二个例子中调用一个函数。你定义一些,但从不打电话给他们。
在第一个示例中,您在定义alertMsg
时调用alertMsgInvoker
,在第二个示例中定义一个调用alertMsg
的函数 - 但不调用。{/ p>
答案 1 :(得分:3)
在您的第一个示例中,您将调用alertMsg ('hi there');
的结果分配给变量alertMsgInvoker
。 alertMsg
没有返回值alertMsgInvoker
的事实既不在这里,也不在那里。
在第二个示例中,您声明alertMsgInvoker
是一个函数,在调用时会调用函数alertMsg
。要获得与第一个示例中相同的结果,您的第二个需要阅读:
var alertMsgInvoker = function () {
alertMsg ('hi there');
}
function alertMsg (msg) {
alert(msg);
}
// Now call alertMsgInvoker
alertMsgInvoker();
答案 2 :(得分:1)
在第一个场景中,您使用参数“hi there”调用函数alertMsg();调用该函数来触发警报功能。该函数不返回任何内容,但仍然将函数的返回值绑定到变量alertMsgInvoker。
在第二个场景中,您向variabel alertMsgInvoker声明一个函数,然后声明一个名为alertMsg的函数。你永远不会在这里解雇任何功能。这就是为什么第二个例子没有显示警告框。
答案 3 :(得分:1)
第一个场景,你正在调用返回undefined的函数alertMsg
。
var alertMsgInvoker = alertMsg ('hi there');
// assign the return value (undefined) to variable alertMsgInvoker
第二种情况,你刚刚定义了一个变量alertMsgInvoker
,这是一个函数但永远不会被调用。