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

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

script>
//定义全局变量test
var test = "全局变量";
function checkscope()
{
var test = "局部变量";
alert(test);
}
checkscope();
//在函数里定义的变量为局部变量,局部变量只在函数内有效。
//如果局部变量和全局变量用相同的变量名,则局部变量将覆盖全局变量
</script>

2.JavaScript语言没有块范围。

<script>
function test(o)
{
//定义变量i,变量i的作用范围是整个函数
var i = 0;
if (typeof o == "object")
{
//定义变量j,变量j的作用范围是整个函数内,而不是if块内。
var j = 5;
for(var k = 0; k < 10; k++)
{
//k的作用范围是整个函数内,而不是循环体内
document.write(k);
}
}
//即使出了循环体,k的值依然存在
alert(k + "\n" + j);
}
test(document);
</script>

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

<script>

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

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

<script type="text/javascript">
var x = "全局变量";
</script> <form action="#" method="get">
<input type="button" value="局部变量"
onclick="var x = '局部变量'; alert('输出x局部变量的值:' + x);" />
<input type="button" value="全局变量 "
onclick="alert('输出x全局变量的值: ' + x);" />
</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. java作业6

    super用法: 1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位 代码如下: class Base { Base() { System.out.println(" ...

  2. Excel文件的导出操作

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

  3. 英文VS2010安装中文版MSDN文档方法

    英文VS2010安装中文版MSDN文档方法 2010-06-01 11:52 by 李永京, 51409 阅读, 50 评论, 收藏, 编辑 在2010年4月12号发布Visual Studio 20 ...

  4. 第二个Sprint冲刺第四天

    讨论地点:宿舍 讨论成员:邵家文.李新.朱浩龙.陈俊金 今天的发展,探讨了统计功能的问题: 一.统计数据针对的是什么功能? 1.初衷是针对计时的填空题,至于其它功能统不统计,那要看开发的进度. 二.对 ...

  5. USB设备的基本概念

    在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的.一个USB设备由3个功能模块组成:USB总线接口.USB逻辑设 ...

  6. 平衡二叉树(Balanced Binary Tree)

    平衡二叉树(Balanced Binary Tree)/AVL树:

  7. (基础篇)PHP获取时间、时间戳的各种格式写法汇总

    1.获取当前时间方法date() 很简单,这就是获取时间的方法,格式为:date($format, $timestamp),format为格式.timestamp为时间戳–可填参数. 2.获取时间戳方 ...

  8. Python4周 入职培训的过程

    这是我在过去几家公司招聘到工程师,Python入职培训的过程.时间分为4周,全部自学,仅提供大纲.适用于Web方向:1.Week1:读完<简明Python教程>,适应Python开发环境2 ...

  9. 运动历史图(MHI)——Motion History Image

    MHI最初是由Bobick 和 Davis提出的,在此之前,Bobick 和 Davis 首先提出了二值的运动能量图(Motion Energy Image,MEI),通过描述物体如何移动和运动在空间 ...

  10. ZOJ1238 Guess the Number

    /*In this problems, we’ll talk about BIG numbers. Yes, I’m sorry, big numbers again…. Let N be a pos ...