2017-06-13 170 views
0

我想调用另一个函数内的函数。现在子函数有一个值要显示在警报消息中。如何获得函数内调用函数的变量值

看看,我至今写的代码:

var subFunction = function(){ 
 
    var subValue = "sub value"; 
 
} 
 

 
var mainFunction = function(){ 
 
    subFunction(); 
 
    alert(subValue); 
 
} 
 

 
mainFunction();

我得到一个错误信息说,该子值没有定义。

我想使用主函数中子函数中存在的变量的值,我该怎么做?

请帮助在此先感谢:)

+0

'subvalue'只存在于'subFunction'范围。因此,错误“subValue未定义”。 – doutriforce

回答

4

返回子功能的价值

var subFunction = function(){ 
    var subValue = "sub value"; 
    return subValue; 
} 

var mainFunction = function(){ 
    var test = subFunction(); 
    alert(test); 
} 

mainFunction(); 
+0

非常感谢:) – Harish

1
var subValue = ""; 

var subFunction = function(){ 
    subValue = "sub value"; 
} 

var mainFunction = function(){ 
    subFunction(); 
    alert(subValue); 
} 

mainFunction(); 

因为这些代码subValue变量应该是一个类范围的变量。

+0

这个假设OP想要改变'subValue'的范围,这不是要求的范围 –

2

这是一个范围界定的问题。变量subValue只能在subFunction内部访问。您可以使这是一个全局变量(可能不理想),或从子函数这样返回该值:

var subFunction = function(){ 
    var subValue = "sub value"; 
    return subValue; 
} 

var mainFunction = function(){ 
    var sv = subFunction(); 
    alert(sv); 
} 

mainFunction(); 
0

的问题是,你想用什么样的结果?基本上,你需要公开表单中的值,你可以使用它。

  1. 只返回值

var subFunction = function() { 
 
     var subValue = "sub value"; 
 
     return subValue;   // <--- 
 
    }, 
 
    mainFunction = function(){ 
 
     console.log(subFunction()); 
 
    }; 
 

 
mainFunction();

  • 使用全局或在外部范围的可变
  • var subFunction = function() { 
     
         var subValue = "sub value"; 
     
         returnValue = subValue;  // <--- 
     
        }, 
     
        mainFunction = function() { 
     
         subFunction(); 
     
         console.log(returnValue); 
     
        }, 
     
        returnValue;     // <--- 
     
    
     
    mainFunction();

  • 存储它作为调用函数的属性
  • var subFunction = function() { 
     
         var subValue = "sub value"; 
     
         subFunction.subValue = subValue; // <--- 
     
        }, 
     
        mainFunction = function() { 
     
         subFunction(); 
     
         console.log(subFunction.subValue); 
     
        }; 
     
    
     
    mainFunction();