[转]javascript 变量的作用范围
2010-10-13 00:31
288 查看
from:http://hanxin830311.javaeye.com/blog/181127
1。根据作用范围不同,变量有全局变量和局部变量两种。在函数里定义的变量为局部变量,局部变量只在函数内有效。 如果局部变量和全局变量用相同的变量名,则局部变量将覆盖全局变量
2。JavaScript语言没有块范围。
因为JavaScript语言没有块范围,有时会出现一些非常奇怪的结果:
变量作用范围在进行HTML事件处理时一样有效:
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 变量的作用范围
- 在javascript中变量的作用范围
- 【javascript】变量作用范围
- 在javascript中变量的作用范围
- Javascript 中变量的作用范围引发的bug
- javascript 变量的作用范围
- 内存操作(指针,变量的生存期及作用范围,良好的动态内存申请和释放习惯)(
- JavaScript变量、作用域及内存
- JavaScript 变量提升 作用域
- JavaScript高级程序设计-(3) 变量、作用域和内存问题
- 黑马程序员_java中变量作用范围
- 黑马-C语言-函数,变量,及变量作用范围
- [Javascript 高级程序设计]学习心得记录6 变量和作用域
- PHP中变量的声明、作用范围和解析规则
- 重新学习C语言笔记 ---变量作用范围
- JavaScript学习日志(一):变量,作用域和内存问题
- (4)传智播客_张孝祥_线程范围内共享变量的概念与作用
- 【JavaScript】04变量、作用域及内存
- javascript中delete对于变量的作用
- bash 循环中变量作用范围的问题分析