全局变量在jquery/javascript中是如何工作的?(初级)

全局变量在jquery/javascript中是如何工作的?(初级),javascript,jquery,global-variables,processing,Javascript,Jquery,Global Variables,Processing,我主要想知道全局变量在javascript/JQuery环境中是如何工作的。我最熟悉一种叫做java的语言,我听说它是基于java的。我希望javascript和JQuery中的变量的行为与处理中的变量类似,但它们的工作方式与我预期的不一样,而且我一辈子都无法对它们保持清醒的头脑 我用一个非常简单的例子来说明我的困惑: var what=""; $(document).ready(function(){ $("p").click(function () {

我主要想知道全局变量在javascript/JQuery环境中是如何工作的。我最熟悉一种叫做java的语言,我听说它是基于java的。我希望javascript和JQuery中的变量的行为与处理中的变量类似,但它们的工作方式与我预期的不一样,而且我一辈子都无法对它们保持清醒的头脑

我用一个非常简单的例子来说明我的困惑:

 var what="";

 $(document).ready(function(){
      $("p").click(function () {
           what="p";
           });
      if(what=="p"){
            alert(what);
           }//end if
 });//end doc ready
在处理过程中,这会起作用,因为“what”变量是全局变量,当它通过单击段落进行更改时,if语句应该持续检查“what'='p',并触发警报。但事实并非如此--“what”似乎只在click函数中更新,即使它是一个全局变量,因此当涉及if语句时,“what”仍然等于“”而不是“p”

如果有人能解释为什么会发生这种情况,我将非常感激

if语句应该持续检查“what”==“p”,并触发警报

为什么??您的任何代码都不会生成该功能。如果希望发生这种情况,可以使用
setInterval()


但事实并非如此——“what”似乎只在click函数中更新,即使它是一个全局变量

否,您的
what
变量正在全局更新。您只是没有注意到,因为您对
if
功能做了错误的假设(只调用了一次)

if语句应该持续检查“what”==“p”,并触发警报

为什么??您的任何代码都不会生成该功能。如果希望发生这种情况,可以使用
setInterval()


但事实并非如此——“what”似乎只在click函数中更新,即使它是一个全局变量


否,您的
what
变量正在全局更新。您只是没有注意到,因为您对
if
功能做了错误的假设(只调用了一次)。

当DOM第一次就绪时,
if
语句只运行一次。它不是连续运行的。如果希望它在单击处理程序期间运行,则可以使用以下代码:

 var what="";

 $(document).ready(function(){
    $("p").click(function () {
       what="p";
       if(what=="p"){
           alert(what);
       }//end if
    });
});//end doc ready

当DOM第一次就绪时,
if
语句只运行一次。它不是连续运行的。如果希望它在单击处理程序期间运行,则可以使用以下代码:

 var what="";

 $(document).ready(function(){
    $("p").click(function () {
       what="p";
       if(what=="p"){
           alert(what);
       }//end if
    });
});//end doc ready

即使函数是在if语句之前定义的,但在它看到“我期望javascript中的变量和JQuery中的变量…”之前它也不会执行——请注意,JQuery不是另一种语言,它是一个用javascript编写的库(函数集合)。因此,它不能做任何JavaScript做不到的事情,它的语法只是JavaScript语法——因此,变量在jQuery方法中的行为方式与任何其他JavaScript相同。即使函数是在if语句之前定义的,它也不会在其之前执行,请参见“我希望JavaScript和jQuery中的变量能够…”-注意jQuery不是另一种语言,它是一个用JavaScript编写的库(函数集合)。所以它不能做任何JavaScript做不到的事情,它的语法只是JavaScript语法——所以jQuery方法中变量的行为方式与其他JavaScript相同。非常感谢您的回复。很抱歉我的无知——我唯一需要掌握的编程诀窍就是处理,我的教授告诉我一切都是这样的,唯一的基本区别是语法。显然我有很多东西要学@AlexJ-我对处理语言一无所知,但我熟悉很多其他语言(包括Java,我在您提到Java之后就提到了),就这类功能而言,我所知道的所有语言都像JavaScript一样工作。也就是说,当其他代码更改变量时,
if
测试中碰巧使用全局变量的代码块不会再次自动执行,而
if
测试不会持续“监视”变量。非常感谢您的回答。很抱歉我的无知——我唯一需要掌握的编程诀窍就是处理,我的教授告诉我一切都是这样的,唯一的基本区别是语法。显然我有很多东西要学@AlexJ-我对处理语言一无所知,但我熟悉很多其他语言(包括Java,我在您提到Java之后就提到了),就这类功能而言,我所知道的所有语言都像JavaScript一样工作。也就是说,当其他代码更改变量时,
if
测试中碰巧使用全局变量的代码块将不会再次自动执行-如果
测试没有连续“监视”变量,那么它只运行一次。我认为如果在页面上调用任何函数,整个过程都会再次执行。感谢您解释这一点,并花时间回答新手的问题!哦,好吧,它只运行一次。我认为如果在页面上调用任何函数,整个过程都会再次执行。感谢您解释这一点,并花时间回答新手的问题!