JavaScript:在函数中调用方法输出Undefined

JavaScript: Calling a method inside a function outputs Undefined

本文关键字:方法 输出 Undefined 调用 函数 JavaScript      更新时间:2023-09-26

我是一个JavaScript新手。我正在试验对象方法,并用全局函数调用它们。我的问题是:当我调用函数内的方法时,它在最后输出未定义的答案。为什么?

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);

输出
Hello1 // in bold 
undefined // in italics

函数可以返回一个值,但默认情况下它们返回undefined。例如:

function logSomething(){ console.log(arguments); }

logSomething返回undefined,因为实际上没有返回任何东西的目的。函数将被调用,但没有人问它要说什么。

(如果您想在其他语言(如C)中描述此函数,您可以将其定义为func logSomething -> Void,其中->表示该函数将返回的内容,在本例中它返回到Void,您可以想象这就像在外层空间中大喊大叫一样。)你喊了一声,但没人会听到。

function multiply(a, b){ return a * b; }

multiply返回ab之乘的值。当调用这个函数时,您希望返回一些东西。如果您执行var c = multiply(2,3);,则希望 c不是undefined,而是6。在我们前面提到的空间呐喊功能中,你实际上希望有人听到你的声音。这将是multiply -> Int)

在编程中,有些函数有返回值时很有用,而有些函数没有返回值。如果没有定义return语句,则返回值默认为undefined

在您的示例中,您正在修改DOM,您实际上不希望返回一个值,因此当您记录结果时,它将是undefined

查看MDN的return语句文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return

看一下

obj.method1 = function(msg)
{
    document.getElementById("message").innerHTML +="<p><b>"+msg+"</b></p>";
}

不返回任何东西。调用

var catalyst = obj.method1(obj.property1);

将定义一个没有自动赋值的变量catalyst。这被传递给ShowMessage,然后不出所料地打印"undefined"。

改变:

obj.method1 = function(msg)
{
    document.getElementById("message").innerHTML +="<p><b>"+msg+"</b></p>";
    return msg;
}