var 作用域||变量
来源:互联网 发布:免费刷超级会员软件 编辑:程序博客网 时间:2024/05/01 11:08
平常我们在使用js 的时候一般使用var来声明变量,相比于C语言Java当中的声明变量要简单一些,但是简单肯定也会有简单的不好之处。 一般来讲,在函数内部(local variable)中,js初始化变量加var的为局部变量不加的时候表现为全局变量(它们都给window对象添加了一个属性)。
例如:
function foo() { t=11 } foo(); console.log(t); //11 console.log("t" in window); //true
可见,在函数中不用var声明表现为全局变量,可以对这个属性进行修改。
function foo(){ var t=11; } foo(); //console.log(t); //后台输出:is not defined console.log("t" in window); //fase
可见这里的t为局部变量,函数当中声明的变量只在函数作用域当中生效,一旦离开了作用域调用就会报错。
我们再看几个例子。
var b=2; function foo1() { b=4; console.log(b); //4 } foo1(); console.log(b); //4
在这里首先定义了 一个变量b,然后在函数内部修改了b的值,因为函数内部的b为全局变量,修改了函数外的变量b。(函数内的b:“俺先在foo里面找找看有没有和俺相同名字的兄台,有就把它赋值为4.很不幸的是foo里木有,于是俺往外找,找呀找,终于在最外层找到一个b,嘿嘿,先把它干了再说~”)
var b=2; function foo1() { var b=4; console.log(b); //4 } foo1(); console.log(b); //2
这里我们在函数内部的b前面加上var使它为局部变量,执行后全局变量b就没有被改变。
我们都知道在函数最外部,我们用var声明一个变量为全局变量,但是如果不加var会出现啥子结果捏?
例子:
t=11;console.log(t); //11console.log("t" in window); //true
结果也为全局变量(window对象的属性)。
有人会想:那我只要加上var关键字就能让它只在当前作用域生效咯?
——不一定
注意:JavaScript没有块级作用域. 例如.
function foo() { for(var i=0;i<10;i++){ console.log("for内"+i); //0,1,2,3,4,5,6,7,8,9 } console.log("函数内for外"+i); //10 } foo();
这里在语句内定义一个变量i,但i的表现实则是在函数内定义的。所以我们能够在语句外函数内去引用变量。 那么我们如何使块语句中声明的变量只作用在块语句内呢?
function foo() { (function() { for(var i=0;i<10;i++){ console.log("for内"+i); //0~9 } })(); console.log("函数内for外"+i); //报错} foo();
但是我们不建议过多地使用全局变量,因为全局变量过多很容易出现变量污染的问题,出错的时候也不容易排除。
0 0
- var 作用域||变量
- js变量作用域var的区别
- 【Js】声明变量中var和作用域关系
- JavaScript变量的作用域&是否有var 的区别
- 关于var、作用域
- js 定义变量的时候 var 和不带var的作用 具体代码演示
- JavaScript作用域和var的关系
- /var/lock/subsys作用
- /var/lock/subsys作用
- /var/lock/subsys作用
- js var的作用
- Var 的作用
- static变量作用域
- 变量作用域2
- 变量作用域3
- 变量作用域1
- 变量作用域
- 变量作用域
- SpringMVC+myBatis启动报错:Access denied for user 'stati'@'localhost' (using password: YES)
- code review的做法以及问题
- 汪海Python爬虫(一)抓取网页的含义和URL基本构成
- Spring <context:annotation-config/> 解说
- 思科模拟器:通过ip route命令将三台路由器相接的两台电脑连通
- var 作用域||变量
- 《JavaScript高级程序设计 第三版》学习笔记 (十一)事件详解
- Servlet学习笔记一
- linux中的硬件抽象层
- CentOS7.3安装Python3.6
- Android中Fragment嵌套Fragment,切换Fragment时不显示视图的原因及解决方法
- 当今世界十大经典算法
- awk把所有日期下的内容输出到同一个文件中
- fineui 页面间传值