来自: http://hanxin0311.iteye.com/blog/181127

1.根据作用范围不同,变量有全局变量和局部变量两种。在函数里定义的变量为局部变量,局部变量只在函数内有效。 如果局部变量和全局变量用相同的变量名,则局部变量将覆盖全局变量。

  1. script>
  2. //定义全局变量test
  3. var test = "全局变量";
  4. function checkscope()
  5. {
  6. var test = "局部变量";
  7. alert(test);
  8. }
  9. checkscope();
  10. //在函数里定义的变量为局部变量,局部变量只在函数内有效。
  11. //如果局部变量和全局变量用相同的变量名,则局部变量将覆盖全局变量
  12. </script>

2.JavaScript语言没有块范围。

  1. <script>
  2. function test(o)
  3. {
  4. //定义变量i,变量i的作用范围是整个函数
  5. var i = 0;
  6. if (typeof o == "object")
  7. {
  8. //定义变量j,变量j的作用范围是整个函数内,而不是if块内。
  9. var j = 5;
  10. for(var k = 0; k < 10; k++)
  11. {
  12. //k的作用范围是整个函数内,而不是循环体内
  13. document.write(k);
  14. }
  15. }
  16. //即使出了循环体,k的值依然存在
  17. alert(k + "\n" + j);
  18. }
  19. test(document);
  20. </script>

因为JavaScript语言没有块范围,有时会出现一些非常奇怪的结果:

  1. <script>
  2.  
  3. var scope = "全局变量";
  4. function test()
  5. {
  6. alert(scope);
  7. var scope = "局部变量";
  8. alert(scope);
  9. }
  10. test();
  11. //代码第一次输出的scope值并不是"全局变量",而是undefined。知识这是因为scope在test函数中已经被重新定义了,局部变量在test函数中将全局有效,即在scope还没定义之前全局变量scope依然被覆盖。
  12. </script>

变量作用范围在进行HTML事件处理时一样有效:

  1. <script type="text/javascript">
  2. var x = "全局变量";
  3. </script>
  4.  
  5. <form action="#" method="get">
  6. <input type="button" value="局部变量"
  7. onclick="var x = '局部变量'; alert('输出x局部变量的值:' + x);" />
  8. <input type="button" value="全局变量 "
  9. onclick="alert('输出x全局变量的值: ' + x);" />
  10. </form>

javascript 变量的作用范围的更多相关文章

  1. JavaScript变量作用域(Variable Scope)和闭包(closure)的基础知识

    在这篇文章中,我会试图讲解JavaScript变量的作用域和声明提升,以及许多隐隐藏的陷阱.为了确保我们不会碰到不可预见的问题,我们必须真正理解这些概念. 基本定义 作用范围是个“木桶”,里面装着变量 ...

  2. JavaScript变量的生命周期

    最近看国外经典教材的时候发现JavaScript与熟知的Java,C,C++都不同的特性,其中一个就是变量的生命周期.   1.在JavaScript中,对于for循环中定义的i变量,其生命周期在循环 ...

  3. javascript变量的作用域

    javascript变量的作用域 基本类型和引用类型 基本类型值指的是简单的数据段,而引用类型值指的是那个可能由多个值组成的对象  讲一个值赋值给变量时,javascript解析器首先要确定是基本类型 ...

  4. JavaScript 变量声明提前

    <JavaScript权威指南>中指出:JavaScript变量在声明之前已经可用,JavaScript的这个特性被非正式的称为声明提前(hoisting),即JavaScript函数中声 ...

  5. JavaScript 变量

    一,JavaScript 变量(存储信息的容器) 与代数一样,JavaScript 变量可用于存放值(比如 x=2)和表达式(比如 z=x+y). 变量可以使用短名称(比如 x 和 y),也可以使用描 ...

  6. javascript变量声明 及作用域

    javascript变量声明提升(hoisting) http://openwares.net/js/javascript_declaration_hoisting.html 可能要FQ一下 java ...

  7. JavaScript 变量作用域

    一. 变量声明 变量用var关键字来声明,如下所示: 变量在未声明的情况下被初始化,会被添加到全局环境. JavaScript执行代码时,会创建一个上下文执行环境,全局环境是最外围的环境.每个函数在被 ...

  8. 【转】javascript变量声明 及作用域

    javascript变量声明提升(hoisting) javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 先看 ...

  9. JavaScript变量和数据类型

    变量 变量就是一个元素,类似于数学中的概念,用来指定表示一个对象.在JavaScript中,用来指定变量的关键字为var.当声明新变量时,可以使用关键词 "new" 来声明其类型 ...

随机推荐

  1. coins_多重背包

    ps:原来用新浪,可是代码的排版不是很好,所以用博客园啦,先容许我把从八月份开始的代码搬过来,从这里重新出发,希望这里可以一直见证我的成长. Time Limit: 2000/1000 MS (Jav ...

  2. Open vSwitch 给虚拟机网卡限流(QoS)

    这里我们简单描述下如何通过Open vSwitch给虚拟机限流(出流量),同时测试限流效果.测试环境继续复用<整合Open vSwitch与DNSmasq为虚拟机提供DHCP功能>一文中描 ...

  3. Activity Lifecycle

    Activity Lifecycle Activities in the system are managed as an activity stack(activity栈?). When a new ...

  4. pcr free library 介绍

    一句话:illumina的建库方法,建库时间段,质量还好... the adapters are different in the PCR-free kit compared to the stand ...

  5. MongoDB国内学术研究(部分)

    1.<MongoDB在煤炭行业GIS数据存储方面的应用> mongoDB的技术介绍占到了文章的60%,剩下的还能说些啥呢,呵呵. 2.<基于MongoDB的矢量空间数据云存储与处理系 ...

  6. B3log部署文档

    https://github.com/b3log/solo/wiki/standalone_mode 独立模式 只要已经安装好了 Java 环境,一个命令就能启动! 不依赖 MySQL 数据库,而是使 ...

  7. C语言 负数取余的原理

    负数求余数运算是一个数学问题: 任何一个整数n都可以表示成 n=k*q+r 其中0<=|r|<|q| 这里的r就是n除以q的余数,即 r==n%q 例如: -9=(-2)*4+(-1) 则 ...

  8. Codeforces Round #366 (Div. 2) B 猜

    B. Spider Man time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  9. 在VS2010下配置OpenCV 2.3

    一.下载OpenCV 2.3:       http://www.opencv.org.cn/download/OpenCV-2.3.0-win-superpack.exe   二.解压 将下载的Op ...

  10. XML的解析方式(DOM、SAX、StAX)

    (新)  XML的解析方式(DOM.SAX.StAX) 博客分类: XML   一般来说,解析XML文件存在着两种方式,一种是event-based API,比如说象SAX,XNI. 第二种是tree ...