js变量作用域的问题

问题描述

小弟,菜鸟级,求各位大侠赐教:在JS中定义了一个全局变量nowTime;varnowTime;//服务器的当前时间然后通过Ajax从后台获取当前的服务器的时间varnowTimeUrl="${ctx}/ajaxAction.do?method=json&classes=resatServiceImpl&common=getNowTime";//定义后台路径$.getJSON(nowTimeUrl,queryNowTime);//执行回调函数//回调函数functionqueryNowTime(data){vartime=data.jsondata.nowTime;this.nowTime=newDate();this.nowTime.setHours(time.split(":")[0]);this.nowTime.setMinutes(time.split(":")[1]);}然后在另外一个方法里面调用这个nowTime,但是并没有值,不知道为什么。。。很是郁闷。。。//用户点击签到时执行的方法functionsignIn(){alert(this.nowTime);//在这里调用,但是没有获取到值//if(nowTime.getTime()>workTime.getTime()){//alert("您已经迟到,请填写迟到原因!");//}else{//alert("签到成功!");//}$("#signIn").css("display","none");$("#signOut").css("display","block");}PS:回调函数已经正确赋值,后台的getNowTime();也是没有问题的,而且在执行signIn()方法之前已经执行了queryNowTime()方法。

解决方案

解决方案二:
ajax默认是异步执行的,在你下面的js执行的时候,异步的数据可能还没有返回
解决方案三:
引用1楼java_pengjin的回复:

ajax默认是异步执行的,在你下面的js执行的时候,异步的数据可能还没有返回

你得在在回调的地方,确定是否已经拿到后台返回值了,再做其他事情。。。中间可以做一些延迟时间的操作,或者类似dwr那样,将处理写在返回值拿到的后面。。。

时间: 2024-11-01 14:03:42

js变量作用域的问题的相关文章

js变量作用域及可访问性的探讨

js|变量|访问 每一种语言都有变量的概念,变量是用来存储信息的一个元素.比如下面这个函数:  1function Student(name,age,from) 2{ 3 this.name = name; 4 this.age = age; 5 this.from = from; 6 this.ToString = function() 7 { 8  return "my information is name: "+this.name+",age : "+thi

js变量作用域及可访问性的探讨_javascript技巧

每一种语言都有变量的概念,变量是用来存储信息的一个元素.比如下面这个函数:  复制代码 代码如下:  function Student(name,age,from)  {   this.name = name;    this.age = age;   this.from = from;    this.ToString = function()   {    return "my information is name: "+this.name+",age : "

php 变量作用域:js变量作用域

请先看一下代码: var scope = "global";function f() {alert(scope);//dispaly "undefined" not "global"var scope = "local";//Vaeiable initized here,but defined everywherealert(scope);//display "local"}f();为什么了?局部变量在整个

js变量以及其作用域详解_javascript技巧

一.变量的类型 Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量.例如: 复制代码 代码如下: i=100;//Number类型 i="variable";//String类型 i={x:4};//Object类型 i=[1,2,3];//Array类型 JS的这种特性虽然让我们的编码更加灵活,但也带来了一个弊端,不利于Debug,编译器的弱检测让我们维护冗长的

js变量、作用域及内存详解_基础知识

基本类型值有:undefined,NUll,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,他们的值保存在栈空间,我们通过按值来访问的. (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 如果赋值的是引用类型的值,则必须在堆内存中为这个值分配空间.由于这种值的大小不固定(对象有很多属性和方法),因此不能把他们保存到栈内存中.但内存地址大小是固定的,因此可以将内存地址保存在栈内存中. <script type="

js变量的作用域详解

量的作用范围又称为作用域,是指某变量在程序中的有效范围.根据作用域,变量可以分为全局变量和局部变量. 1  全局变量的作用域是全局性的,即在整个网页特效程序中,全局变量处处都在. 2  而在函数内部声明的变量,只在函数内部起作用.这些变量是局部变量,作用域是局部性的:函数的参数也是局部性的,只在函数内部起作用. 相信大家都知道,javascript中变量作用域只有两种,全局作用域与函数中的局部作用域(有人认为不同script节点间也存在一种作用域,称之为段作用域,理由是在后面的script的节点

浅谈php中include文件变量作用域_php实例

在php中我们有时候需要include一个文件.比如我前段时间在写一个框架的时候,打算用原生的php作为模板,然后写一个display方法引入模板文件就可以,但是这只是我的意淫而已. 写完后发现在模板中所有的变量都提示未定义.通过各种研究和查找资料,总结了include文件时的几种情况下的作用域. 第一种情况:A文件include B文件,在B文件中可以调用A中的变量. A文件代码: <?php $aaa = '123'; include "B.php"; B文件代码: <

js变量以及其作用域详解

一.变量的类型  Javascript和Java.C这些语言不同,它是一种无类型.弱检测的语言.它对变量的定义并不需要声明变量类型,我们只要通过赋值的形式,可以将各种类型的数据赋值给同一个变量.例如: i=100;//Number类型  i="variable";//String类型  i={x:4};//Object类型  i=[1,2,3];//Array类型 JS的这种特性虽然让我们的编码更加灵活,但也带来了一个弊端,不利于Debug,编译器的弱检测让我们维护冗长的代码时相当痛苦

有关js的变量作用域和this指针的讨论_javascript技巧

一.变量作用域:[P71] 这一句话说的非常精辟:"在ECMAScript中,只有两种执行环境,全局环境和函数环境,每个函数都是一个执行环境,包括嵌套函数.换句话说,其他情况下即使变量声明在一对大括号中,在括号外部仍然可以访问这些变量".以下给出例子: 复制代码 代码如下: for(var i=0; i<5; i++) { var num = 20; // 在for语句中声明的变量 } alert(num); // 在for语句外部调用变量,仍然可以得到num的值 对异常语句也同