Javascript 如何在不将变量定义为全局变量的情况下访问函数内部的变量

Javascript 如何在不将变量定义为全局变量的情况下访问函数内部的变量,javascript,function,variables,scope,declaration,Javascript,Function,Variables,Scope,Declaration,如何在不将变量定义为全局变量的情况下访问函数内部的变量 function name() { var name2 = 20; }; console.log(name2) 简而言之,您不能访问在此函数作用域之外的函数中声明的变量 在这里,您试图访问naem函数范围之外的name2变量,这是不可能的,因为使用var关键字声明的变量仅在声明它的块中可见 如果您检查,您可以看到: 使用var声明的变量的作用域是其当前执行上下文,它可以是封闭函数,也可以是在任何函数之外声明的全局变量。如果重新声明J

如何在不将变量定义为全局变量的情况下访问函数内部的变量

function name() {
  var name2 = 20;
};

console.log(name2)
简而言之,您不能访问在此函数作用域之外的函数中声明的变量

在这里,您试图访问naem函数范围之外的name2变量,这是不可能的,因为使用var关键字声明的变量仅在声明它的块中可见

如果您检查,您可以看到:

使用var声明的变量的作用域是其当前执行上下文,它可以是封闭函数,也可以是在任何函数之外声明的全局变量。如果重新声明JavaScript变量,它不会丢失其值

有关更多详细信息,请查看:

. . 使用子句:

函数showName firstName,lastName{ var nameIntro=您的名字是; //此内部函数可以访问外部函数的变量,包括参数 函数makeFullName{ 返回nameIntro+firstName++lastName;
 } 返回makeFullName; }
console.logshowName迈克尔,杰克逊;除了a在可以读取它的范围内分配它或b从函数返回它之外,没有其他方法。简言之:您不能。简言之:变量仅在函数执行时存在。如果尚未调用该函数,则该变量永远不存在。如果函数已完成执行,则变量将不再存在。所以…你不能。@deceze谢谢你的解释。你可以退一步,描述/演示你为什么要做这件看似随机的事情。如果您试图解决一个实际问题,那么这个问题似乎不适合解决它。闭包呢?这是另一回事,我们在这里讨论函数和作用域。我们还是您?在本例中,闭包显然满足了标题中的问题。@marekful您可以在这里明显地虚构各种假设情况,但问题的范围非常狭窄。@marekful Me或we,闭包在这里是另一回事,问题中共享的代码只是推断fu,nctions,变量和作用域。这有点过于复杂了…@deceze,现在一切都好了吗?@HardikShah这和简单的返回名一样;正如在其他答案中所建议的,以一种更复杂的方式。@chŝdk,是的,这就是为什么我会坚持使用带有参数的子句。是的,因为您上次的编辑只是使事情复杂化了。