JavaScript: 在函数内调用方法输出未定义

JavaScript: Calling a method inside a function outputs Undefined

我是 JavaScript.I 的新手,正在试验对象方法并使用全局函数调用它们。我的问题是:当我在函数内部调用该方法时,它在末尾输出 undefined 以及 answer.Why is that ?

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

看看

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

这没有 return 任何东西。来电

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

将定义一个变量催化剂,它不会自动分配任何值。这被传递给 ShowMessagewich 然后不出所料地打印 "undefined"。

变化:

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

    return msg;
}

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

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

logSomething returns undefined 因为实际上 return 没有任何目的。该函数将被调用,但没有人问它必须说什么。

(如果您要用其他语言(如 C)描述此函数,您可以将其定义为 func logSomething -> Void,其中 -> 表示函数将 return 的内容,在这种情况下它return进入了虚空,你可以想象这就像在外space中大喊大叫。你大声喊叫,但没有人会听到。)

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

multiply return 是 ab 相乘的值。调用此函数时,您想要 某些内容returned。如果你 var c = multiply(2,3); 想要 c 不是 undefined 而是 6。在我们前面提到的space-喊叫功能中,您实际上希望有人听到您的声音。这将是 multiply -> Int)

在编程中,某些函数在具有 return 值时很有用,而其他函数则没有。如果您没有定义 return 语句,则 returned 值将默认为 undefined.

在您的示例中,您正在修改 DOM,您实际上并不希望某个值被 return 编辑,因此当您记录结果时,它将是 undefined

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