今天,编写一个JavaScript的代码,是这样子的:

function a(){

...

for(i=0;i<abc.length;i++){

...

b();

...

}

...

}

function b(){

...

for(i=0;i<def.length;i++){

...

}

...

}

这样2个JavaScript函数。然而,a函数仅仅执行了一次循环,就跳出了for循环。它本应该执行多次循环。

我查了一整天代码,刚才终于让我发现了错误的原因。

原来,Javascript的变量,生命周期管理有问题。函数a和b的局部变量i,  JavaScript认为它们是同一个变量。

这样,在函数b中执行完循环后,函数a中的i值已经超过了条件,所以每一次都只执行一次a的for循环。

我把b函数中的i改成j之后,就正常了!

这种变量生命周期的管理,确实是有悖常理的。 我使用的是IE7,不知道这是不是JavaScript的规范?还是IE7自身的实现有问题?

看来,我们必须在JavaScript编码中,注意尽量避免使用同名的变量,以免发生变量名冲突这样的问题。这种问题极其隐蔽,很难发现!

转载于:https://www.cnblogs.com/armlinux/archive/2006/08/22/2391082.html

Javascript的变量作用域居然可以跨越多个函数!相关推荐

  1. 深入理解JavaScript的变量作用域

    在学习JavaScript的变量作用域之前,我们应当明确几点: a.JavaScript的变量作用域是基于其特有的作用域链的. b.JavaScript没有块级作用域. c.函数中声明的变量在整个函数 ...

  2. JavaScript的变量作用域深入理解(转)

    在学习JavaScript的变量作用域之前,我们应当明确几点:  a.JavaScript的变量作用域是基于其特有的作用域链的.  b.JavaScript没有块级作用域.  c.函数中声明的变量在整 ...

  3. 深入理解JavaScript的变量作用域(转)

    在学习JavaScript的变量作用域之前,我们应当明确几点: a.JavaScript的变量作用域是基于其特有的作用域链的. b.JavaScript没有块级作用域. c.函数中声明的变量在整个函数 ...

  4. 深入理解JavaScript的变量作用域(转载Rain Man之作)

    在学习JavaScript的变量作用域之前,我们应当明确几点: JavaScript的变量作用域是基于其特有的作用域链的. JavaScript没有块级作用域. 函数中声明的变量在整个函数中都有定义. ...

  5. javaScript中变量作用域

    作用域是程序源代码中定义变量的区域. 作用域规定了如何查找变量,也就是确定当前执行代码对变量的访问权限. JavaScript采用词法作用域(lexical scoping),也就是静态作用域. 转载 ...

  6. 【C++ grammar】重载、内联、变量作用域、带默认参数的函数

    目录 1.变量的作用域 1. 变量的作用域分类 2. Unary Scope Resolution (一元作用域解析运算符) 2.重载函数 3.带有默认参数值的函数 4.重载函数 VS 带有默认参数值 ...

  7. 【JavaScript 笔记】— 函数高级(变量作用域、解构赋值、方法、高阶函数、闭包、箭头函数、generator)

    JavaScript个人笔记 变量作用域 变量提升 全局对象 windows 命名空间 局部作用域 常量 解构赋值 使用场景 方法 apply 装饰器 高阶函数(Array) map reduce m ...

  8. javascript变量作用域一点总结

    前言:javascript里变量作用域是个经常让人头痛抓狂的问题,下面通过10++个题目,对经常遇到又容易出错的情况进行了简单总结,代码样例很短很简单 题目一 var name = 'casper'; ...

  9. HTML5学习笔记(十四):变量作用域

    在JavaScript中,用var申明的变量实际上是有作用域的. 如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量: function foo() {var x = ...

最新文章

  1. Android中NFC编程
  2. 更改eclipse tomcat jvm heap
  3. 数据库保护(数据库备份)Sql Server2012 图形界面操作
  4. GIT项目管理工具(part6)--放弃工作区文件修改及从仓库区恢复文件
  5. IPC 共享内存和 消息队列(发送、接收、移除)以及键值的生成
  6. java 线程局部存储,转载boost::thread简要分析(3):线程局部存储及其它
  7. JVM监控及诊断工具命令行篇之jstack
  8. c4d语言在哪个文件夹,c4d的插件目录是哪个文件夹(c4d插件怎么安装)
  9. import oracle utility_oracle executing oracle import utility,please wait终极解决方案
  10. 移动硬盘安装win10
  11. 区块链的底层技术:P2P网络原理与应用详解
  12. 预处理工艺采用水处理过滤器的作用说明
  13. 多益网络2022届校招提前批全面启动【免筛推荐码QEAQU】
  14. python发邮件附件_python 发送带附件的邮件
  15. 在vue页面监听中如何修改子元素的样式
  16. 黑马程序员 JAVA相关基础知识
  17. 奥特曼系列ol如何进老服务器,《奥特曼系列OL》新手攻略
  18. zip压缩包密码破解
  19. c语言,通过计算行最简的方式来求行列式的值
  20. 计算机动画ico图标,动画图标制作工具(GraphicsGale)

热门文章

  1. 更改chrome临时目录(可举一反三)
  2. 中央暗示:07年别急买房
  3. Access数据库查询练习专用数据库 -手机号码归属地Access数据库_MobileDB(10万条记录)...
  4. android点9图architecture
  5. 【Android】刷Rom:adb reboot bootloader
  6. 回文字符串—回文子串—Manacher算法
  7. Codeforces 976F
  8. 个人总结------高级知识点必会
  9. jQuery dataTable 操作个人使用总结
  10. jquery 判断元素显示或隐藏