2012-04-25 49 views
1

我有下面的代码:函数返回正确的值和“未定义”

module = { 

     submodule: { 

      value: 'foo', 

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

     } 

    }; 

当我通过控制台测试此代码,我得到正确的价值和undefined,但是当我使用相同的代码与return语句中init函数我只得到正确的值。我想这是那些常见的初学者和微不足道的问题之一,但我目前无法围绕这个:)

回答

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;,因为它可马上退出功能),它会返回一个未定义的值,因为,你好,没有定义你想要它返回。没关系,只要你不尝试使用返回的值。

3

控制台返回未定义,因为你的方法没有返回任何值,控制台总是输出返回一个功能从控制台调用时。

如果在init方法中添加return true,它将输出值并为true。

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