Javascript中的变量使用说明


Posted in Javascript onMay 18, 2010

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
Javascript 相关文章推荐
javascript处理table表格的代码
Dec 06 Javascript
jQuery总体架构的理解分析
Mar 07 Javascript
javascript 函数声明与函数表达式的区别介绍
Oct 05 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
Dec 27 Javascript
html的DOM中document对象images集合用法实例
Jan 21 Javascript
JavaScript实现在标题栏上显示当前日期的方法
Mar 19 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
Sep 23 Javascript
easyUI下拉列表点击事件使用方法
May 18 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
Dec 04 Javascript
Node.js笔记之process模块解读
May 31 Javascript
Vue常用指令详解分析
Aug 19 Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 Javascript
Javascript实现的鼠标经过时播放声音
May 18 #Javascript
JavaScript 继承机制的实现(待续)
May 18 #Javascript
JavaScript 面向对象编程(2) 定义类
May 18 #Javascript
JavaScript 面向对象编程(1) 基础
May 18 #Javascript
Javascript Object.extend
May 18 #Javascript
Jsonp 跨域的原理以及Jquery的解决方案
May 18 #Javascript
javascript 密码强度验证规则、打分、验证(给出前端代码,后端代码可根据强度规则翻译)
May 18 #Javascript
You might like
广播爱好者需要了解的天线知识
2021/03/01 无线电
同一空间绑定多个域名而实现访问不同页面的PHP代码
2006/12/06 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
php调用KyotoTycoon简单实例
2015/04/02 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
精通Javascript系列之数值计算
2011/06/07 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
javascript拖拽上传类库DropzoneJS使用方法
2013/12/05 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
JS动态显示表格上下frame的方法
2015/03/31 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
彻底理解js面向对象之继承
2018/02/04 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
Vue+Element UI 树形控件整合下拉功能菜单(tree + dropdown +input)
2020/08/28 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
python自动安装pip
2014/04/24 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
numpy找出array中的最大值,最小值实例
2018/04/03 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
wxpython绘制音频效果
2019/11/18 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
瑞典快乐袜子:Happy Socks
2018/02/16 全球购物
青年志愿者先进事迹
2014/05/06 职场文书
2014最新预备党员思想汇报范文:中国梦,我的梦
2014/10/25 职场文书
2015年基层党建工作总结
2015/05/14 职场文书
国博复兴之路观后感
2015/06/02 职场文书
2015年幼儿教育工作总结
2015/07/24 职场文书