Fdream's Blog
专注于WEB前端开发
Powered by Google

笔记:JavaScript变量无块级作用域

6 雨天 2006-12
Fdream 发表于 Ajax Web, 已被阅读 12656 次, 评论 6 条
关键词:JavaScript 笔记
[ 阅读字体大小: ]

乱七八糟的事情忙了很久,FBS的计划基本上算是流产了[disinclined],最近事情还没有结束。因为什么本科教学评估,很多烦人的实验报告要写,还加上几篇结业论文。最近有整段的空闲就跑去和考研的兄弟们挤到一起去上自习。大四还上自习的人大致可以分为两种,一种是考研流,一种是号称考研流,后一种也有人说是BT,很遗憾,我被无情划入第二种。考研的人看很厚的书,我也看很厚的书,只不过他们的是考研的书,我看的是JavaScript之类的。考研的人拿笔写个不停,我也拿支笔写个不停,他们是做题目,我是做笔记。

正在看的一本是《JavaScript权威指南》,本来有电子版的,但是太不清晰了,而且再电脑前看书也不是很舒服,愣是从图书馆把这唯一的一本给借到了。看这本书的时候明白了很多以前不曾明白的东西,也纠正了以前一些错误的理解,还做了不少笔记,呵呵^_^

今天要说的是以前我的错误理解——关于JavaScript的局部变量有没有块级作用域一说。以前一直以为JavaScript和C++、Java一样有块级作用域,看了书才知道错了。JavaScript的局部变量作用域应属于函数级作用域(我的说法),即在一个函数中声明的变量,无论是在哪里声明的,在整个函数中它们都是有定义的。

一个简单的例子,局部变量无论在哪里定义,在整个函数中都有作用:

引用内容:

var s="global";

function f(){

//输出undefined

document.write(s+"<br />");

//s在此处被初始化,但在整个函数中都有定义

var s="local";

//输出local

document.write(s+"<br />");

}

f();

上面的这个函数和下面的这个函数等价:

引用内容:

function f(){

//局部变量在开头声明

var s;

//输出undefined

document.write(s+"<br />");

//s在此处被初始化

s="local";

//输出local

document.write(s+"<br />");

}

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;k++){

//c=1时,输出i=0,j=0,k=0

document.write("i="+i+",j="+j+",k="+k+"<br />");

}

//c=1时,输出i=0,j=0,k=1

document.write("i="+i+",j="+j+",k="+k+"<br />");

}

//c=1时,输出i=0,j=0,k=1

document.write("i="+i+",j="+j+",k="+k+"<br />");

}

test(1);

Related articles 您可能对这些文章也感兴趣:
Related comments 与该文相关的评论:(我也想说几句)
引用这个评论  大可 于 8/15/2008 6:48:17 PM 发表评论: 

再测试,一会你都删了

再测试,一会你都删了
引用这个评论  rukey67 于 8/15/2008 6:46:45 PM 发表评论: 

试试我的帐号还能登陆吗

试试我的帐号还能登陆吗
引用这个评论  naodai 于 6/11/2008 12:14:19 AM 发表评论: 

事隔两年了吧!

呵呵!

我现在也是,不过我是大三的,过完暑假就大四了.

不知学长现在在做什么啊?

http://www.webphper.cn

事隔两年了吧! 呵呵! 我现在也是,不过我是大三的,过完暑假就大四了. 不知学长现在在做什么啊? http://www.webphper.cn
引用这个评论  Awflasher 于 12/11/2006 2:25:35 PM 发表评论: 

行,没问题。

可以先过来认识一些技术高手:)

行,没问题。 可以先过来认识一些技术高手:)
引用这个评论  Fdream 于 12/7/2006 9:03:50 PM 发表评论: 

这个我先和辅导员说说,能过去尽量过去,呵呵

这个我先和辅导员说说,能过去尽量过去,呵呵
引用这个评论  Awflasher 于 12/7/2006 6:16:17 PM 发表评论: 

我也在看这本书。

anyway。明年过来我们这里做毕业设计吧。有一些事情想跟你聊聊。

我也在看这本书。 anyway。明年过来我们这里做毕业设计吧。有一些事情想跟你聊聊。
Add a comment 我来说两句: 
禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
arrow
用户名:   密码:  (匿名可不写) 同时注册?
验证码:   看不清?换个图片  看不清楚?换个图片

 
Copyright © 2005-2008,Fdream All Rights Reserved
Processed in 0.078126 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号