Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问函数外部的局部变量_Javascript_Jquery - Fatal编程技术网

Javascript 访问函数外部的局部变量

Javascript 访问函数外部的局部变量,javascript,jquery,Javascript,Jquery,我知道这将是一个非常明显的答案,但请记住,我最近开始学习JS,这是我唯一不理解的原则之一 我试图找到一种方法,使函数中的变量成为全局变量。我将向您展示我的代码,以便您了解: $('#inputSubmit').click(function() { addText_1("Good, your character's name is " + getInput() + "."); condition1 = true; }); if(condition1 == true) { ad

我知道这将是一个非常明显的答案,但请记住,我最近开始学习JS,这是我唯一不理解的原则之一

我试图找到一种方法,使函数中的变量成为全局变量。我将向您展示我的代码,以便您了解:

$('#inputSubmit').click(function() {
    addText_1("Good, your character's name is " + getInput() + ".");
    condition1 = true;
});
if(condition1 == true) {
   addText_1("Now")
})

我试图找到一种方法,使if语句能够访问condition1变量,以便执行以下代码行

由于某些原因,if语句无法访问click事件中的condition1值

另外,也许你知道一个更好的方法,用这种方法来做我想做的事情。基本上,我正在尝试编写代码,如果单击了#inputSubmit,则将使用addText_1函数。如果你知道另一种方法,我想知道


非常感谢您的帮助,如果这个问题不是很清楚,我很抱歉。

基本问题是代码的时间轴。尽管代码是用2个块构建的,但最后一个块实际上是在第一个块之前运行的

$('#inputSubmit').click(function() // occurs when the user click (#2)
{
    addText_1("Good, your character's name is " + getInput() + ".");
    condition1 = true;
});

if(condition1 == true) // occurs when the page load (#1)
{
   addText_1("Now")
};
我想你想做的是:

$('#inputSubmit').click(function() 
{
    addText_1("Good, your character's name is " + getInput() + ".");
    addText_1("Now")
});

好消息!您的“condition1”变量不是局部变量,因为您忘了用
var
声明它。(我的意思是。)对于一个真正的局部变量,如果没有函数的参与,你就不能这样做。局部变量是局部变量。这就是重点。如果你想的话,把它向上移动一个级别以减少局部性,这将创建一个闭包。哦,好吧,但是我的If语句没有执行有什么原因吗?你试图实现的是概念上的错误。单击处理程序在单击(任何内容)时执行。单击处理程序定义后面的代码行在附加处理程序后立即运行,而不是在执行后运行。谢谢大家的评论!非常感谢,你帮助我理解了。