惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
N
News | PayPal Newsroom
WordPress大学
WordPress大学
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
S
Secure Thoughts
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - 【当耐特】
博客园 - 聂微东
S
Securelist
宝玉的分享
宝玉的分享
爱范儿
爱范儿
IT之家
IT之家
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
AI
AI
Security Latest
Security Latest
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Last Watchdog
The Last Watchdog
月光博客
月光博客
D
Darknet – Hacking Tools, Hacker News & Cyber Security
S
Schneier on Security
人人都是产品经理
人人都是产品经理
Webroot Blog
Webroot Blog
Jina AI
Jina AI
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
N
News and Events Feed by Topic
Recent Commits to openclaw:main
Recent Commits to openclaw:main
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
S
Security Affairs
美团技术团队
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
罗磊的独立博客
Spread Privacy
Spread Privacy
Help Net Security
Help Net Security
T
Tailwind CSS Blog
C
Cybersecurity and Infrastructure Security Agency CISA
博客园_首页
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - 白夜

fedora 17 安装mono ASP.NET MVC3实践笔记 最近要学习的几篇博文 input file 输入类型检测,及value清空 在网页中集成股票走势 Tomcat 报错 累死了 关于IIS无法启动,World Wide Web Publishing服务无法启动,提示错误127 给Aptana Studio添加aspx页面支持 模板页当中的js文件加载问题 Jscript运行时错误:没有权限 javascript动态绑定img的src地址 关于IIS无法打开aspx页面的问题 关于WebService无法序列化接口的问题 简述WebService与.NET Remoting的区别及适应场合。(转) 关于单实例模式 关于Sys未定以的问题 希望 有关.NET中序列化的一些知识 [转]
javascript全局变量失效
白夜 · 2009-02-07 · via 博客园 - 白夜

问题:我在js文件中定义了一个全局变量:var a,在函数B()中给a赋值,然后在函数C()中访问a结果发现a居然是undefined

找原因: 查了不少资料感觉和我的情况都不同,仔细分析了一下,发现了一些端倪:我的操作是这样的,我在A页面中加了iframe,iframe的地址是B,我在A页面中调用了B()函数,然后又在B页面中调用了C()函数。问题就出在这了,javascript的全局变量的作用范围实际上是只在当前页面起作用(仔细想一下也应是这样,要不然岂不是要乱套了),从这个意义上讲javascript的全局变量也谈不上是全局变量,它只在当前页面中起作用,我们要是把当前页面看做一个类的话,那我们就完全可以把这中全局变量看做为private的。至此,问题原因就很简单了,我在A页面中访问的a变量和我在B页面中访问的a变量中访问的a变来那个并不是同一个变量,就好像是一个类里面的private变量,我在A实例中访问的和我在B实例中访问的并不是同一个变量是同样的道理。

解决: 原因找的了,问题也就好解决了,首先我是在A页面中调用的B()函数,我只要在A页面中调用C()函数,那么A、B函数访问的变量就是同一变量了,那我怎么才能在A页面中调用B()函数呢,我要把B页面当中返回值作为参数传入B函数啊,呵呵,其实方法很简单了啊,只要这样就可以了:我在B页面中写了这么一句:window.parent.C(str)。str为我要返回的值,好了我的问题就这么解决了,就好像是我在B实例中调用A实例的方法,然后传递参数一样,呵呵其实在C#真的很好理解,但在js中就难了点,其实我们可以这么理解,一个js文件就相当于一个类,我们在页面中引用这个文件时就相当于实例化了这个类,那么一切都好理解了。我们写在js文件函数中的变量当然作用域就是这个函数,那我们写在js文件中的变量就相当于我们写在类中的变量,那么它的作用域就是这个类的实例。