Javascript中的变量使用说明_基础知识

javascript中的所有变量都是类型松散的,不同于其他面向对象语音的变量声明都是强类型的.因此Javascript 的变量声明是不包括类型的。通过var关键字或者直接写变量名来声明一个变量,如:
var v = 1;
v=1;

这时有人可能会问,上述的两种声明有什么区别,为什 么会有这两种不同的声明方式,这就涉及到javascript中变量的作用域了。在javascript中,变量的作用域包括全局和函数级别的。

全局变量可以声明在函数体外,无论使用上述的哪种声明方式,在函数体外 声明的变量都是全局变量。如:

复制代码 代码如下:

<script type="text/javascript" language="javascript">
var v = 1;

function foo()
{
alert(v);
}

w = 2;
function bar()
{
alert(w);
}

foo();
</script>

运行结果:1 2

另外,在函数内部声明的变量如果不使用var关键字,声明的变量也将是全局变量。如:

复制代码 代码如下:

<script type="text/javascript" language="javascript">
function foo()
{
v = 1;
}

foo();
alert(v);
</script>

运行结果:1
但是需要注意,这种情况下,若要使用变量,必须先调用声明变量的函数对变量进行初始化, 如foo(),否则,将会出现“变量v未定义”的错误。

全局变量将作为window对象的属性存在,因为可以 通过window.$($表示变量名)访问。当然也可以通过变量名直接访问。下面会讲到为什么有这两种访问方式。

在函数内部通过var关键字声明的变量将是函数级别的变量,其作用域仅仅限于函数内部。如:

复制代码 代码如下:

<script type="text/javascript" language="javascript">
function foo()
{
var v=1;
alert(v);
}

alert(v);
</script>

运行结果:1 变量“v”未定义

通过上面的分析,可以发现关键字var主要作用 是定义函数级别的变量。

细心的朋友可以会问,如果在函数内部和外部定义了相同的变量,会是什么样的结果呢?如:

复制代码 代码如下:

<script type="text/javascript" language="javascript">
var v=1;
function foo()
{
alert(v);
var v=2;
}

foo();
</script>

运行结果:undefined
!!!!!也许有人会比较郁闷了,v明明白白的定义在函数foo()体外,为什么会是 undefined呢?这就涉及到javascript的解析了。根据经验,javascript对于函数体内变量的解析过程是:
搜索所有的 var关键字,将其变量声明放到函数体的最前面,赋值和使用仍然保持不变,这样,上面的javascript实际上是等同于:

复制代码 代码如下:

<script type="text/javascript" language="javascript">
var v=1;
function foo()
{
var v;
alert(v);
v=2;
}

foo();
</script>

照此分析,产生上述 的结果就显而易见了,由于函数内部的变量的优先级高于全局变量的优先级(大部分的编程语言都是这样), 函数内部的变量v覆盖了全局变量v,但是由于在使用函数内部变量v时,它仅仅声明,但未赋值,因此结果是undefined。

如果在方法 体内仍然要使用定义的全局变量v,window对象此时派上大大的用场了,可以通过window.v来访问。如:

复制代码 代码如下:

<script type="text/javascript" language="javascript">
var v=1;
function foo()
{
alert(window.v);
alert(v);
var v=2;
}

foo();
</script>

运行结果:2 undefined

时间: 2024-08-01 14:02:23

Javascript中的变量使用说明_基础知识的相关文章

深入解读JavaScript中的Hoisting机制_基础知识

hoisting机制 javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到当前作用域的最前面. 先看一段代码 var v = "hello"; (function(){ console.log(v); var v = "world"; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v.代码做少

JavaScript中的this机制_基础知识

JavaScript有自己的一套this机制,在不同情况下,this的指向也不尽相同. 全局范围 console.log(this); //全局变量 全局范围使用this指向的是全局变量,浏览器环境下就是window. 注:ECMAScript5的strict模式不存在全局变量,这里的this是undefined. 函数调用中 function foo() { console.log(this); } foo(); //全局变量 函数调用中的this也指向全局变量. 注:ECMAScript5的

详解JavaScript中的异常处理方法_基础知识

 有三种类型的编程错误:(1)语法错误和(2)运行时错误(3)逻辑错误:语法错误: 语法错误,也被称为解析错误,在编译时进行传统的编程语言,并出现在JavaScript解释时. 例如,下面一行将导致一个语法错误,因为它缺少一个右括号: <script type="text/javascript"> <!-- window.print(; //--> </script> 当一个语法错误在JavaScript中出现,只有在同一个线程中包含的语法错误的影响

探寻JavaScript中this指针指向_基础知识

探寻JavaScript中this指针指向 首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象(这句话有些问题,后面会解释为什么会有问题,虽然网上大部分的文章都是这样说的,虽然在很多情况下那样去理解不会出什么问题,但是实际上那样理解是不准确的,所以在你理解this的时候会有种琢磨不透的感觉),那么接下来我会深入的探讨这个问题. 为什么要学习this?如果你学过函数式编程,面向对象编程,那你肯定知

深入理解javascript中return的作用_基础知识

这里面的return含有一些细节知识: 例如:onClick='return add_onclick()'与 onClick='add_onclick()'的区别 JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是false时,将中断操作. 而直接执行时(不用return).将不会对window.event.returnvalue进行设置所以会默认

详解JavaScript中的every()方法_基础知识

 JavaScript 数组中的每个方法测试数组中的所有元素是否经过所提供的函数来实现测试.语法 array.every(callback[, thisObject]); 下面是参数的详细信息:     callback : 函数用来测试每个元素     thisObject : 对象作为该执行回调时使用 返回值: 返回true,如果此数组中的每个元素满足所提供的测试函数.兼容性: 这种方法是一个JavaScript扩展到ECMA-262标准;因此它可能不存在在标准的其他实现.为了使它工作,你需

深入理解JavaScript中的箭头函数_基础知识

从一开始箭头就是 JavaScript 的一部分,在第一个 JavaScript 中就建议将内联的脚本代码包裹在 HTML 的注释中,这可以防止那些不支持 JavaScript 的浏览器错误滴将你的代码显示为明文.你也许写过下面这样的代码: <script language="javascript"> <!-- document.bgColor = "brown"; // red // --> </script> <scri

谈谈关于JavaScript 中的 MVC 模式_基础知识

原文:Model-View-Controller (MVC) with JavaScript作者:Alex@Net译文:JavaScript 的 MVC 模式译者:justjavac 本文介绍了模型-视图-控制器模式在 JavaScript 中的实现. 我喜欢 JavaScript,因为它是在世界上最灵活的语言之一. 在 JavaScript 中,程序员可以根据自己的口味选择编程风格:面向过程或面向对象. 如果你是一个重口味,JavaScript 一样可以应付自如: 面向过程,面向对象,面向方面

解析JavaScript中的标签语句_基础知识

Javascript中标签(label)是一个标识符.标签可以与变量重名,它是一个独立的语法元素(既不是变量,也不是类型),其作用是标识"标签化语句(labeled statement)"标签声明标签(label)可以声明在任何一个语句前面,或者语句块前,以使得语句或语句块被"标签化(labeled)".label1: 复制代码 代码如下:     myFun1();label2:{   var i = 1, j = 2;   var k = i + j;} 注意: