首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么变量在文档就绪标记之外显示为未定义

为什么变量在文档就绪标记之外显示为未定义
EN

Stack Overflow用户
提问于 2016-06-15 12:50:02
回答 5查看 1.2K关注 0票数 1

在学习jQuery和Javascript时,我观察到了一个奇怪的行为。当我调用一个在$(.ready)文档内部定义的变量时,从这些标记外部看它似乎是未定义的,即使我将它定义为一个全局变量,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).ready(function() {
   myVar = "test";
});
alert(typeof(myVar));
//Results "undefined"

如果我在document.ready标记内调用相同的变量,它会按预期工作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).ready(function() {
   myVar = "test";
   alert(typeof(myVar));
   //Results "String"
});

即使在使用窗口前缀之后,结果也是相同的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).ready(function() {
   window.myVar = "test";
});
alert(typeof(window.myVar));
//Results "undefined"

我理解变量作用域,但为什么即使是全局变量也不能这样工作。我真的很困惑。

EN

回答 5

Stack Overflow用户

发布于 2016-06-15 12:52:02

在完全构建DOM之前,“就绪”处理程序中的代码将不会运行。一旦遇到处理程序外部的代码,它就会立即运行。因此,您的alert()在处理程序中的代码运行之前运行,因此结果非常合理:全局变量尚未初始化,因此它的值为undefined

通过将alert() (或者更好地说,是console.log())调用放在“就绪”处理程序中,您可以清楚地看到执行的顺序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).ready(function() {
  console.log("In the 'ready' handler");
});
console.log("Outside the 'ready' handler");

当该程序运行时,您将首先看到记录的"Outside“消息。

票数 3
EN

Stack Overflow用户

发布于 2016-06-15 12:52:57

因为alert()是在文档完全准备好之前执行的。您甚至可以尝试在$(document).ready()之前声明变量,但它仍将返回未定义的..

票数 1
EN

Stack Overflow用户

发布于 2016-06-15 12:54:56

$(document).ready()在页面完全加载后触发

当脚本标记完全加载时,将执行警报。

所以

  1. 脚本标记已加载=> Execute alert
  2. 继续加载页面
  3. 页面已完全加载=>

$(document).ready

  1. You var is set=>

在设置var之前,将执行警报

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37835989

复制
相关文章
用JQUERY做大表单(多表单域)AJAX提交
function postData() { var post = ""; $(":text").each(function() { post += "&" + this.name + "=" + this.value; }); $(":password").each(function() { post += "&" + this.name + "=" + this.value; }
liulun
2022/05/09
1.3K0
【jquery Ajax 】form表单教学+评论案例
表单在网页中主要负责数据采集功能,HTML中的<form>标签,就是用于采集用户输入的信息,并通过<form>标签的提交操作,把采集到的信息提交到服务器端进行处理。
坚毅的小解同志的前端社区
2022/11/28
2.2K1
【jquery Ajax 】form表单教学+评论案例
在ASP.MVC中使用Ajax
      Asp.net MVC 抛弃了Asp.net WebForm那种高度封装的控件,让我们跟底层的HTML有了更多的亲近。可以更自由、更灵活的去控制HTML的结构、样式和行为。Asp.net
用户1055830
2018/01/18
1.6K0
在ASP.MVC中使用Ajax
JQuery Ajax解读(3)
3.使用post方式进行异步请求:$.post (url,[data],[callback],[type])
py3study
2020/01/10
2930
Asp.Net Mvc表单提交(批量提交)
Asp.Net Mvc中Action的参数可以自动接收和反序列化form表单的值,
yaphetsfang
2020/07/30
3K0
JQuery ajax调用asp.net的webMethod
在vs2010中,用JQuery ajax调用asp.net 2.0的  webMethod 方法时,怎么都调不出来,原来和3.5 有点出入。
跟着阿笨一起玩NET
2018/09/19
2.2K0
JQuery ajax调用asp.net的webMethod
jQuery ajax - ajax() 方法jQuery ajax - ajax() 方法
http://www.w3school.com.cn/jquery/ajax_ajax.asp
一个会写诗的程序员
2018/08/17
14.5K0
JQuery ajax调用asp.net的webMethod
本文章转载:http://www.cnblogs.com/zengxiangzhan/archive/2011/01/16/1936938.html
跟着阿笨一起玩NET
2018/09/19
2.1K0
jquery实现ajax提交form表单的方法总结
方法一: function AddHandlingFeeToRefund() { var AjaxURL= "../OrderManagement/AjaxModifyOrderService.aspx"; alert($('#formAddHandlingFee').serialize()); $.ajax({ type: "POST",
PM吃瓜
2019/08/12
2K0
jquery validation engine ajax验证,jQuery Validation Engine 表单验证「建议收藏」
可以依赖多项,如:validate[condRequired[id1,id2]][Demo]
全栈程序员站长
2022/11/09
1.5K0
jQuery学习笔记之jQuery的Ajax(3)
———————————————————————————— 6.0 jQuery ajax 浏览器给我们提供的XMLHttpRequest的作用是来发送http请求。 js代码发送一个http的请求 XMLHttpRequest的四步:创建对象、注册监听、建立连接、发送数据
王小雷
2019/05/26
9040
ASP.NET MVC (三、表单与文件上传)
本章节主要针对文件上传进行强化练习,关键字【HttpPostedFileBase files,enctype="multipart/form-data"】  
红目香薰
2022/11/29
2.7K0
ASP.NET MVC (三、表单与文件上传)
ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
  位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据模型中的各个字段的验证。这些特性用于定义常见的验证模式,例如范围检查和必填字段。而 DataAnnotations 特性使 MVC 能够提供客户端和服务器验证检查,使你无需进行额外的编码来控制数据的有效。
Edison Zhou
2018/08/20
2.1K0
ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器
如何解决jQuery Validation针对动态添加的表单无法工作的问题?
为了充分利用ASP.NET MVC在服务端呈现HTML的能力,在《利用动态注入HTML的方式来设计复杂页面》一文中介绍了,通过Ajax调用获取HTML来呈现复杂页面中某一部分界面的解决方案。我们知道ASP.NET MVC默认集成了jQuery Validation,但是对于通过JavaScript动态添加的表单,客户端验证默认情况下是失效的。 还是以前文涉及的“联系人管理”为例,在一个ASP.NET MVC应用中定义了如下两个类型,Contact封装联系人信息,HomeController包含三个Actio
蒋金楠
2018/01/15
2K0
如何解决jQuery Validation针对动态添加的表单无法工作的问题?
ASP.NET Core通过jQuery Ajax发送AntiForgeryToken
在ASP.NET Core中,如我我们希望用jQuery Ajax向服务器提交数据,并希望使用ValidateAntiForgeryToken标记,我们需要一些技巧。官方文档并没有说如何使用jQuery完成这个操作,我来演示给大家看看。
Edi Wang
2019/07/08
1.6K0
ASP.NET AJAX(3)__UpdatePanel
今天也不知道写不写的完了,最近闲下来了,却感冒了,早上起来都不会说话了,不过幸亏咱不是靠嘴皮子过活了,哎~~~~窃喜吧 上一篇简单写到UpdatePanel的一些好处和坏处,这一篇呢,就细致的认识一下UpdatePanel这个控件,并合理的使用它 UpdatePanel的一些属性 : RenderMode     __Block(默认值):设定UpdatePanel使用DIV来圈出要跟新的区域     __Inline:设定UpdatePanel使用span来。。。。。。 UpdateMode  
小白哥哥
2018/03/07
4.9K0
ASP.NET AJAX(3)__UpdatePanel
Asp.net mvc 知多少(六)
本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可访问http://www.dotnettricks.com/free-ebooks自行下载。该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。 由于个人技术水平和英文水平也是有限的,因此错误在所难免,希
圣杰
2018/01/11
2.4K0
Asp.net mvc 知多少(六)
Asp.net MVC Jquery提交后乱码问题
最近在处理MVC时,遇到要将特殊字符,或者XML格式的数据传递到后台,但是后台解析发现无法识别,处理有误。
aehyok
2018/09/11
1.6K0
jQuery和asp.net mvc相关资源链接
jQuery: Simplify calling ASP.NET AJAX services from jQuery jQuery Splitter jHtmlArea – The all NEW HTML WYSIWYG Editor for jQuery Expand table rows with jQuery - jExpand plugin Quick Tip – Reading & Editing HTML Attributes in jQuery Use jQuery and ASP.NET
张善友
2018/01/22
1.3K0
jquery ajax步骤,jquery ajax(ajax请求的五个步骤jQuery)
AJAX是与服务器交流数据的艺术,它在不重载全部页面的情况下,完成了对部分网页的更新。
全栈程序员站长
2022/08/29
1.7K0
jquery ajax步骤,jquery ajax(ajax请求的五个步骤jQuery)

相似问题

JavaScript硬币翻转“你赢/输”信息无效

50

连续赢/输R

125

轮盘赌赢输

33

将javascript数组导出到形状文件

10

Javascript::导出到文本文件

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文