乱七八糟的事情忙了很久,FBS的计划基本上算是流产了[disinclined],最近事情还没有结束。因为什么本科教学评估,很多烦人的实验报告要写,还加上几篇结业论文。最近有整段的空闲就跑去和考研的兄弟们挤到一起去上自习。大四还上自习的人大致可以分为两种,一种是考研流,一种是号称考研流,后一种也有人说是BT,很遗憾,我被无情划入第二种。考研的人看很厚的书,我也看很厚的书,只不过他们的是考研的书,我看的是JavaScript之类的。考研的人拿笔写个不停,我也拿支笔写个不停,他们是做题目,我是做笔记。
正在看的一本是《JavaScript权威指南》,本来有电子版的,但是太不清晰了,而且再电脑前看书也不是很舒服,愣是从图书馆把这唯一的一本给借到了。看这本书的时候明白了很多以前不曾明白的东西,也纠正了以前一些错误的理解,还做了不少笔记,呵呵^_^
今天要说的是以前我的错误理解——关于JavaScript的局部变量有没有块级作用域一说。以前一直以为JavaScript和C++、Java一样有块级作用域,看了书才知道错了。JavaScript的局部变量作用域应属于函数级作用域(我的说法),即在一个函数中声明的变量,无论是在哪里声明的,在整个函数中它们都是有定义的。
一个简单的例子,局部变量无论在哪里定义,在整个函数中都有作用:
var s=”global”;
function f(){//输出undefined
document.write(s+”
“);//s在此处被初始化,但在整个函数中都有定义
var s=”local”;//输出local
document.write(s+”
“);
}
f();
上面的这个函数和下面的这个函数等价:
function f(){
//局部变量在开头声明
var s;//输出undefined
document.write(s+”
“);//s在此处被初始化
s=”local”;//输出local
document.write(s+”
“);
}
f();
局部变量无块作用域,如下面的代码,i,j,k在的作用域是相同的:
function test(c){
var i=0; //i在整个函数中有定义
if(c>0){
//j到处都有定义,不仅限于这个代码块,但在此处初始化
var j=0;//k到处都有定义,不仅限于这个循环
for(var k=0;k//c=1时,输出i=0,j=0,k=0
document.write(“i=”+i+”,j=”+j+”,k=”+k+”
“);
}//c=1时,输出i=0,j=0,k=1
document.write(“i=”+i+”,j=”+j+”,k=”+k+”
“);
}//c=1时,输出i=0,j=0,k=1
document.write(“i=”+i+”,j=”+j+”,k=”+k+”
“);
}
test(1);
我也在看这本书。
anyway。明年过来我们这里做毕业设计吧。有一些事情想跟你聊聊。
这个我先和辅导员说说,能过去尽量过去,呵呵
行,没问题。
可以先过来认识一些技术高手:)
事隔两年了吧!
呵呵!
我现在也是,不过我是大三的,过完暑假就大四了.
不知学长现在在做什么啊?
http://www.webphper.cn
再测试,一会你都删了
试试我的帐号还能登陆吗