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 相关文章推荐
js跟随滚动条滚动浮动代码
Dec 31 Javascript
jquery multiSelect 多选下拉框
Jul 09 Javascript
jquery 获取自定义属性(attr和prop)的实现代码
Jun 27 Javascript
js格式化金额可选是否带千分位以及保留精度
Jan 28 Javascript
JQuery实现动态适时改变字体颜色的方法
Mar 10 Javascript
JavaScript实现的背景自动变色代码
Oct 17 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
Dec 27 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
Dec 11 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
Jan 13 Javascript
JS获取input[file]的值并显示在页面的实现方法
Mar 09 Javascript
node实现基于token的身份验证
Apr 09 Javascript
Vue入门之数量加减运算操作示例
Dec 11 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
模拟OICQ的实现思路和核心程序(二)
2006/10/09 PHP
PHP学习之PHP表达式
2006/10/09 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
php发送html格式文本邮件的方法
2015/06/10 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP中quotemeta()函数的用法讲解
2019/04/04 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
2019/10/16 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
js脚本实现数据去重
2014/11/27 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
JS实现iframe自适应高度的方法示例
2017/01/07 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
vue-cli webpack 开发环境跨域详解
2017/05/18 Javascript
详解VUE 数组更新
2017/12/16 Javascript
NodeJS如何实现同步的方法示例
2018/08/24 NodeJs
vue-week-picker实现支持按周切换的日历
2019/06/26 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
python写日志封装类实例
2015/06/28 Python
Python安装Numpy和matplotlib的方法(推荐)
2017/11/02 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
Python基础学习之函数方法实例详解
2019/06/18 Python
python适合人工智能的理由和优势
2019/06/28 Python
python实现指定ip端口扫描方式
2019/12/17 Python
基于Tensorflow高阶读写教程
2020/02/10 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
慰问信模板
2015/02/14 职场文书
销售员岗位职责范本
2015/04/11 职场文书
小学生法制教育心得体会
2016/01/14 职场文书