javascript变量:全局?还是局部?这个得注意
来源:互联网 发布:算法的复杂性分为 编辑:程序博客网 时间:2024/05/16 12:18
在JS中,是没有块级作用域的
举两个个例子:
if语句块:
if (true){var name='Ling';}alert(name);输出:Ling
for语句块;
for(var i=0;i<10;i++) {var name='Ling';}alert(i);alert(name);
输出:10
输出:Ling
也就是说最后的结果都是window下全局变量:
<span style="font-family:KaiTi_GB2312;">alert(window.i);alert(window.name);</span>
在Javascript的函数体中,有下面几种情况需要注意:
1、有无Var
如果有Var,在函数内部声明变量是局部变量,如下例,读取不到name的数据。
<span style="font-family:KaiTi_GB2312;">function box(){var name ='Ling';}alert(name);</span>如果把var去掉的话,那么就会输出:Ling,此时声明的变量为全局变量。在写代码的过程中,不适用var就初始变量的话,会有很多意外发生,所以初始变量的时候一定要加上var。
2、全局变量和局部变量命名相同
<span style="font-family:KaiTi_GB2312;">var scope="global"; function t(){ alert(scope); var scope="local" alert(scope); } </span>最终的输出结果是:
undefined
local
为什么会出现这样的结果?因为:
javascript 变量范围
(1)全局变量的作用域是全局性的,即在整个Javascript程序中,全局变量作用处处都存在。定义在”script”块中,在”function”函数外。
(2)局部变量的作用域是局部性的,在函数内部或函数参数时定义,作用范围是从函数开始到结尾(注意此处说法)
(3)在函数内部,局部变量的优先级比同名的全局变量优先级要高;如果存在与全局变量名称相同的局部变量(包括参数),那么该全局变量将不再起作用。
原来是这个原因。不知道你看明白了没有~~
那么当全局变量和局部变量重名时,怎么解决这个问题呢?
哈哈~~最简单的当然就是避免全局变量和局部变量相遇咯~~
还有另外一种方法,window对象的所有属性拥有全局作用域,用window.全局变量名,如下:
<span style="font-family:KaiTi_GB2312;">var scope="global"; function t(){ alert(window.scope); var scope="local" alert(scope); } </span>
至此,问题也就说完了。
总结
上面的问题其实也反映的另一个问题,命名规范的问题,如果命名不规范,就会出现很多意想不到的问题,所以,花点时间上网查查几种不同的命名的规范,这样能在你编写代码的时候减少不必要的麻烦。
1 0
- javascript变量:全局?还是局部?这个得注意
- 优化!局部还是全局?
- js全局局部变量
- 全局和局部变量
- 全局和局部变量
- 全局与局部变量
- 全局/局部变量
- Javascript(二)-01-(全局和局部变量)
- 局部变量使用注意
- JavaScript全局变量和局部变量的使用注意点
- JS-全局和局部变量
- c全局和局部变量
- python的全局局部变量
- python基础-全局 & 局部 变量
- 全局变量,全局静态变量,局部变量,静态局部变量
- 局部变量,局部静态变量,全局变量,全局静态变量分别
- 局部变量,局部静态变量,全局变量,全局静态变量分别
- 全局变量,全局静态变量,局部变量,静态局部变量
- Swoole源码学习记录(十四)——Server模块详解(下)
- [创新工场]2014创新工场校园招聘之回文串修复
- 第九周项目4--乘法口诀表
- Android短信列表源码分析
- 用电脑上的计算器计算反三角函数
- javascript变量:全局?还是局部?这个得注意
- Tomcat启动过程原理详解
- 别人在我电脑上登录了QQ,如何查找别人的密码?QQ1622863529
- 对数据库的增删改(一个类)
- 理解javascript作用域和作用域链
- 我想知道老婆的手机解锁密码?QQ1622863529
- URL编码以及GET和POST提交乱码解决方案
- AIX VIO: Block Lost or IPC Send Timeout Possible Without Fix of APAR IZ97457 (Doc ID 1305174.1)
- 新Mac Mini 开箱