在另一个函数中访问变量,返回未定义的-JavaScript

在另一个函数中访问变量,返回未定义的-JavaScript,javascript,function,closures,scope,scoping,Javascript,Function,Closures,Scope,Scoping,我试图访问另一个函数中存在的变量,但我无法访问,它为我提供了未定义的函数(getMess(),如下所示),我正在通过该函数进行访问。 根据下面的代码,我希望通过myfunction1访问“value1”,如下所示。 代码: 我刚刚发布了另一个与原始问题相同的问题:您可以做: myfunction2: function(message1,message2){ var value1 = message1; var value2 = message2; namespace.

我试图访问另一个函数中存在的变量,但我无法访问,它为我提供了未定义的函数(getMess(),如下所示),我正在通过该函数进行访问。 根据下面的代码,我希望通过myfunction1访问“value1”,如下所示。 代码:

我刚刚发布了另一个与原始问题相同的问题:

您可以做:

myfunction2: function(message1,message2){

    var value1 = message1;
    var value2 = message2;

    namespace.myfunction2.getMess: function(){ return value1;}
    namespace.myfunction2.getLab: function() { return value2;}
}
但这相当糟糕(将属性指定给函数对象)。最好使用模块模式来重构整个过程

e、 g

你可以做:

myfunction2: function(message1,message2){

    var value1 = message1;
    var value2 = message2;

    namespace.myfunction2.getMess: function(){ return value1;}
    namespace.myfunction2.getLab: function() { return value2;}
}
但这相当糟糕(将属性指定给函数对象)。最好使用模块模式来重构整个过程

e、 g

你可以做:

myfunction2: function(message1,message2){

    var value1 = message1;
    var value2 = message2;

    namespace.myfunction2.getMess: function(){ return value1;}
    namespace.myfunction2.getLab: function() { return value2;}
}
但这相当糟糕(将属性指定给函数对象)。最好使用模块模式来重构整个过程

e、 g

你可以做:

myfunction2: function(message1,message2){

    var value1 = message1;
    var value2 = message2;

    namespace.myfunction2.getMess: function(){ return value1;}
    namespace.myfunction2.getLab: function() { return value2;}
}
但这相当糟糕(将属性指定给函数对象)。最好使用模块模式来重构整个过程

e、 g


这对我来说似乎很奇怪,但首先,您重新调整了一个对象,并且在尝试返回的两个函数之间缺少了一个

var namespace ={
    myfunction1: function(){
        var jamie = namespace.myfunction2("hello","bye");   // save returned value so we can use them later.
        console.info(jamie.getMess); //as we already executed the value just refer to them
    },

    myfunction2: function(message1,message2){
        var value1 = message1;
        var value2 = message2;
        return{
          getMess: function(){ return value1;}(), //return self executing functions to return values without the need to run them again.
          getLab: function(){ return value2;}()
        }
    }
}
namespace.myfunction1();

虽然我仍然不确定您试图实现的是什么,但我将如何在两个函数之间传递值,同时不向
名称空间声明变量,而是以这种方式全局分配值。

这对我来说似乎很奇怪,但首先,您重新调整了一个对象,缺少了一个
在您试图返回的两个函数之间

var namespace ={
    myfunction1: function(){
        var jamie = namespace.myfunction2("hello","bye");   // save returned value so we can use them later.
        console.info(jamie.getMess); //as we already executed the value just refer to them
    },

    myfunction2: function(message1,message2){
        var value1 = message1;
        var value2 = message2;
        return{
          getMess: function(){ return value1;}(), //return self executing functions to return values without the need to run them again.
          getLab: function(){ return value2;}()
        }
    }
}
namespace.myfunction1();

虽然我仍然不确定您试图实现的是什么,但我将如何在两个函数之间传递值,同时不向
名称空间声明变量,而是以这种方式全局分配值。

这对我来说似乎很奇怪,但首先,您重新调整了一个对象,缺少了一个
在您试图返回的两个函数之间

var namespace ={
    myfunction1: function(){
        var jamie = namespace.myfunction2("hello","bye");   // save returned value so we can use them later.
        console.info(jamie.getMess); //as we already executed the value just refer to them
    },

    myfunction2: function(message1,message2){
        var value1 = message1;
        var value2 = message2;
        return{
          getMess: function(){ return value1;}(), //return self executing functions to return values without the need to run them again.
          getLab: function(){ return value2;}()
        }
    }
}
namespace.myfunction1();

虽然我仍然不确定您试图实现的是什么,但我将如何在两个函数之间传递值,同时不向
名称空间声明变量,而是以这种方式全局分配值。

这对我来说似乎很奇怪,但首先,您重新调整了一个对象,缺少了一个
在您试图返回的两个函数之间

var namespace ={
    myfunction1: function(){
        var jamie = namespace.myfunction2("hello","bye");   // save returned value so we can use them later.
        console.info(jamie.getMess); //as we already executed the value just refer to them
    },

    myfunction2: function(message1,message2){
        var value1 = message1;
        var value2 = message2;
        return{
          getMess: function(){ return value1;}(), //return self executing functions to return values without the need to run them again.
          getLab: function(){ return value2;}()
        }
    }
}
namespace.myfunction1();


虽然我仍然不确定您想要实现什么,但这是我如何在两个函数之间传递值,同时不向
名称空间声明变量,而是以这种方式全局分配值。

您需要执行
mufunction2
来返回函数。为什么要返回函数而不只是返回值?@JamieHutber:这似乎是基于某种示例代码-我在JavaScript课程中将这种风格视为闭包的示例。您需要执行
mufunction2
,才能返回函数。为什么您要返回函数而不只是返回值呢?@JamieHutber:这似乎是基于一些示例代码类似于示例代码-我在JavaScript课程中看到过这种类型的闭包示例。你需要执行
mufunction2
来返回函数。为什么你要返回函数而不仅仅是返回值?@JamieHutber:这似乎是基于某种示例代码-我看到这种类型的东西是关于JavaScript的闭包示例。你需要执行
mufunction2
来返回函数。为什么你要返回函数而不仅仅是返回值?@JamieHutber:这似乎是基于某种示例代码-我见过这种类型的东西作为关于JavaScript的闭包示例。嗯,使用参数调用namespace.function2只能从外部进行,因为我是从不同的文件(cshtml)调用它的,其余的代码都在一个单独的js文件中。我将尝试总结我想要的-我想要在myfunction2中设置2个值(调用namespace.myfunction2正在执行),然后我想要从另一个函数(即myfunction1)访问这些值。我不介意整个代码被更改,但我想实现这一点。希望澄清一下,对namespace.function2的参数调用只能从外部进行,因为我是从另一个文件(cshtml)调用它的,其余的代码都在一个单独的js文件中。我将尝试总结我想要的-我想要在myfunction2中设置2个值(调用namespace.myfunction2正在执行),然后我想要从另一个函数(即myfunction1)访问这些值。我不介意整个代码被更改,但我想实现这一点。希望澄清一下,对namespace.function2的参数调用只能从外部进行,因为我是从另一个文件(cshtml)调用它的,其余的代码都在一个单独的js文件中。我将尝试总结我想要的-我想要在myfunction2中设置2个值(调用namespace.myfunction2正在执行),然后我想要从另一个函数(即myfunction1)访问这些值。我不介意整个代码被更改,但我想实现这一点。希望澄清一下,对namespace.function2的参数调用只能从外部进行,因为我是从另一个文件(cshtml)调用它的,其余的代码都在一个单独的js文件中。我将尝试总结我想要的-我想要在myfunction2中设置2个值(调用namespace.myfunction2正在执行),然后我想要从另一个函数(即myfunction1)访问这些值。我不介意整个代码被更改,但我想实现这一点。希望澄清一下,我们真的需要外部返回吗(就在声明私有成员之后),原因是,我的代码在名称空间中还有很多其他函数以及fn1和fn2?此外,看起来我们正在使用全局var