全局变量在jquery/javascript中是如何工作的?(初级)
我主要想知道全局变量在javascript/JQuery环境中是如何工作的。我最熟悉一种叫做java的语言,我听说它是基于java的。我希望javascript和JQuery中的变量的行为与处理中的变量类似,但它们的工作方式与我预期的不一样,而且我一辈子都无法对它们保持清醒的头脑 我用一个非常简单的例子来说明我的困惑:全局变量在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 () {
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
测试中碰巧使用全局变量的代码块将不会再次自动执行-如果测试没有连续“监视”变量,那么它只运行一次。我认为如果在页面上调用任何函数,整个过程都会再次执行。感谢您解释这一点,并花时间回答新手的问题!哦,好吧,它只运行一次。我认为如果在页面上调用任何函数,整个过程都会再次执行。感谢您解释这一点,并花时间回答新手的问题!