webrebuild.org第四届年会——金秋四城联动
大白的工作笔记 注册 | 登陆

变量作用域的问题

笔记。

今天群里有人说去淘宝面试了,有一道关于简单有容易出错的问题,应为基础不牢固也犯错了特此笔记一下。

 

JavaScript代码
  1. var a = 100;   
  2. function testResult(){   
  3.   var b = 2 * a;   
  4.   var a = 200;   
  5.   var c = a / 2;   
  6.   alert(b);   
  7.   alert(c);   
  8. }   
  9. testResult()  

输出的是什么呢?

开始我觉得应该是  200 和 100, 结果 确实NaN和100。

为什么第一个会是NaN呢?命名已经定义了全局变量,var b=2 * a 应该是可以2*100的结果啊

后来翻阅资料才明白,当全局变量和局部变量同名的时候,全局变量是不会主用于同名局部变量的作用域的。也就是说var a=100是不会作用于testResult这个函数中的。

引用:

1.全局变量和它的作用域
  全局变量是指在程序开头的说明部分定义和说明的量。它的作用域分为两种情况:
(1)在全局变量和局部变量不同名时,其作用域是整个程序。
(2)在全局变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用域。
2.局部变量和它的作用域
  凡是在子程序内部使用的变量,必须在子程序中加入说明。这种在子程序内部说明的变量称为局部变量。局部变量的作用域是其所在的子程序。形式参数也只能在子程序中有效。因此也属于局部变量。局部变量的作用域分为两种情况:
(1)当外层过程序的局部变量名和嵌套过程中的局部变量不同名时,外层过程的局部变量作用域包含嵌套过琛。
(2)当外层过程的局部变量名和嵌套过程内的局部变量名同名时,外层局部变量名的作用域不包含此过程。

Tags: 作用域, 变量, 淘宝面试

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5

6条记录访客评论

食堂承包首选正福餐饮公司www.shsx88.com

Post by 食堂承包 on 2009, December 7, 11:55 AM 引用此文发表评论 #1

这个还真不知道,向大白同志看齐!!!

Post by zhenn on 2009, December 5, 9:33 PM 引用此文发表评论 #2

很好很强大,狂力顶一下!

Post by 私房菜 on 2009, December 4, 7:35 PM 引用此文发表评论 #3

食堂承包www.shsx88.com

Post by 食堂承包 on 2009, December 3, 8:33 AM 引用此文发表评论 #4

隔离卡批发.价格优惠.电话:

Post by 隔离卡 on 2009, December 3, 3:31 AM 引用此文发表评论 #5

烤肉炉百度烤肉炉纸上烤肉炉烧烤炉专用纸围裙其它致富小机械批发.价格优惠.电话:02482116562 QQ:491783951 网址:http://www.086hh.com

Post by 烤肉炉 on 2009, December 2, 1:23 PM 引用此文发表评论 #6


发表评论

评论内容 (必填):