JavaScript:在函数内调用方法会输出未定义的结果
我是JavaScript的新手。我在试验对象方法,并用全局函数调用它们。我的问题是:当我在函数中调用该方法时,它会在最后输出未定义的结果和答案。为什么JavaScript:在函数内调用方法会输出未定义的结果,javascript,javascript-objects,Javascript,Javascript Objects,我是JavaScript的新手。我在试验对象方法,并用全局函数调用它们。我的问题是:当我在函数中调用该方法时,它会在最后输出未定义的结果和答案。为什么 function ShowMessage(msg) { if(arguments.length == 1) { document.getElementById("message").innerHTML += "<p><i>"+msg+"</i></p>"; }
function ShowMessage(msg)
{
if(arguments.length == 1)
{
document.getElementById("message").innerHTML += "<p><i>"+msg+"</i></p>";
}
}
var obj = obj || {};
obj.property1 = "Hello1";
obj.method1 = function(msg)
{
document.getElementById("message").innerHTML +="<p><b>"+msg+"</b></p>";
}
var catalyst = obj.method1(obj.property1);
ShowMessage(catalyst);
看看
obj.method1 = function(msg)
{
document.getElementById("message").innerHTML +="<p><b>"+msg+"</b></p>";
}
将定义一个不自动分配任何内容的变量catalyst。它被传递到ShowMessage,然后打印“undefined”(未定义)
更改:
obj.method1 = function(msg)
{
document.getElementById("message").innerHTML +="<p><b>"+msg+"</b></p>";
return msg;
}
obj.method1=函数(msg)
{
document.getElementById(“message”).innerHTML+=“”+msg+””;
返回味精;
}
函数可以返回值,但默认情况下,它们返回未定义的值。例如:
function logSomething(){ console.log(arguments); }
logSomething
返回undefined
,因为实际返回任何内容都没有意义。函数将被调用,但没有人询问它要说什么
(如果你想用C等其他语言来描述这个函数,你可以将它定义为func logSomething->Void
,其中->
指示函数将返回什么,在这种情况下,它将返回到Void中,你可以想象这就像在外太空中喊叫一样。你执行一个喊叫,但没有人会听到。)
multiply
返回mutlipinga
和b
的值。调用此函数时,您希望返回一些内容。如果你做var c=multiply(2,3)
您希望c不是未定义的
,而是6
。在我们前面提到的空间叫喊功能中,您实际上希望有人听到您的声音。这将是multiply->Int
)
在编程中,有些函数有返回值时很有用,而有些函数没有。如果未定义return
语句,则返回的值将默认为undefined
在您的示例中,您正在修改DOM,实际上并不希望返回一个值,因此当您记录结果时,它将是未定义的
请查看MDN中的return
语句文档:您的函数不返回任何内容,请使用return
关键字,此时您的函数将传回一些内容。你可以归还你想要的任何东西,我不知道你在期待什么,但这就是要点。更多信息:这是因为method1
没有return
语句,所以返回undefined
。
obj.method1 = function(msg)
{
document.getElementById("message").innerHTML +="<p><b>"+msg+"</b></p>";
return msg;
}
function logSomething(){ console.log(arguments); }
function multiply(a, b){ return a * b; }