1

我有以下代码:

module = {

        submodule: {

            value: 'foo',

            init: function(){
                console.log(module.submodule.value);
            }

        }

    };

当我通过控制台测试这段代码时,我得到了正确的值,undefined但是当我 在函数return内使用带有语句的相同代码时,init我只能得到正确的值。我想这是那些常见的初学者和微不足道的问题之一,但我目前无法解决这个问题:)

4

2 回答 2

3

控制台返回未定义,因为您的方法不返回任何值,并且控制台在从控制台调用时始终输出函数的返回。

如果您添加return trueinit 方法,它将输出值和 true。

这只是控制台的行为,您没有看到任何错误。

于 2012-04-25T09:16:57.780 回答
3

您的函数没有返回任何内容。控制台只显示函数的返回值。您的函数不需要返回某些内容,但是如果您希望控制台最终显示“值”,请使用

module = {

        submodule: {

            value: 'foo',

            init: function(){
                return module.submodule.value;
            }

        }

    };

发生的事情是每个函数“返回”一些东西。这东西可以用作其他地方的输入。例如,

function getName(){
return "Manish";
}

alert(getName()) //will display "Manish" sans quotes

你可以做类似的事情

function sin(theta){
//do some math voodoo, store result in "result"
return result;
}
alert((sin(theta)*sin(theta)-5)/Math.sqrt(1-sin(theta)*sin(theta))//random thingy

但是,如果你决定不让你的函数返回一些东西(或者return;因为它可以立即退出函数而使用),它将返回一个未定义的值,因为,好吧,你没有定义你想要它返回的东西。哪个很好,只要您不尝试使用返回值。

于 2012-04-25T09:23:54.833 回答