javascript全局变量失效

javascript全局变量失效问题:我在js文件中定义了一个全局变量:vara,在函数B()中给a赋值,然后在函数C()中访问a结果发现a居然是undefined找原因:查了不少资料感觉和我的情况都不同,仔细分析了一下,发现了一些端倪:我的操作是这样的,我在A页面中加了iframe,iframe的地址是B,我在A页面中调用了B()函数,然后又在B页面中调用了C()函数。问题就出在这了,javascript的全…

大家好,又见面了,我是你们的朋友全栈君。

问题:我在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文件中的变量就相当于我们写在类中的变量,那么它的作用域就是这个类的实例。

 

转载于:https://www.cnblogs.com/baiye7223725/archive/2009/02/07/1385980.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131011.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Activiti7实战-入门

    Activiti7实战-入门Activiti7的使用和原理1.什么是工作流?1.1工作流介绍工作流:通过计算机对业务流程自动化执行管理。多个参与者按照某种预定规则自动进行传递文档、信息任务处理的过程。1.2工作流系统一个软件系统中具有工作流的功能,我们把它称为工作流系统。1.3工作流实现方式采用状态字段的值来跟踪流程的变化情况程序可以不用改变,业务流程可变化。1.4工作流原理分析2.什么是Activiti7Activiti是一个工作流引擎,activiti可以将业务系统中复杂的业务流程抽取

    2022年10月21日
    2
  • HDU 4508 沼泽湿地系列故事——记住减肥I (2013腾讯编程马拉松预赛第一)

    HDU 4508 沼泽湿地系列故事——记住减肥I (2013腾讯编程马拉松预赛第一)

    2022年1月2日
    46
  • Red5搭建直播平台

    Red5搭建直播平台Red5搭建直播平台

    2022年4月23日
    46
  • SqlTransaction

    SqlTransactionpublicvoidRunSqlTransaction(stringmyConnString){   SqlConnectionmyConnection=newSqlConnection(myConnString);   myConnection.Open();   SqlCommandmyCommand=myConnection.CreateCommand();  

    2022年6月10日
    27
  • python之turtle海龟绘图篇[通俗易懂]

    python之turtle海龟绘图篇[通俗易懂]海龟绘图,想什么,画什么:七段数码管、谢尔帕斯基三角形、玫瑰花和小猪佩奇都不是问题

    2022年6月28日
    39
  • python写学生信息管理系统代码_学生管理系统源码

    python写学生信息管理系统代码_学生管理系统源码一、前言相信很多小伙伴在学校期间都会被要求实现一个学生管理系统,很多是让用C语言实现,有的是要求Python。这里通过python实现了一个学生管理系统,考试/交作业必备!二、实现效果三、完整源码defindex():”””管理系统主页”””print(“*”*30)print(“Python学生管理系统\n\n1.添加学生的信息\n2.删除学生的信息\n3.修改学生的信息\n4.查询学生的信息\n5.查询所有学生的信息\n6.退出系统

    2022年9月15日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号