易截截图软件、单文件、免安装、纯绿色、仅160KB

认清JavaScript和JAVA全局变量和局部变量的作用域

认清JavaScript和JAVA全局变量和局部变量的作用域
2010年2月28日 george 发表评论 阅读评论
通过淘宝面试题来认清JavaScript和JAVA全局变量和局部变量的作用域
注意两者是有严重区别的!
var a = 100;
function testResult(){
  var b = 2 * a;
  var a = 200;
  var c = a / 2;
  alert(b);
  alert(c);
}
testResult()
一开始我给出的假设是400和100,可是测试后发现错了结果应该是NaN和100,让我百思不得其解,我认为在方法体中a是会被存入内存的,通过寻址找到a,由于全局变量和局部变量同名,全局变量应该失效,所以我很肯定是400和100!但是我错了!我需要更新我的记忆库!
1.全局变量和它的作用域
全局变量是指在程序开头的说明部分定义和说明的量。它的作用域分为两种情况:
(1)在全局变量和局部变量不同名时,其作用域是整个程序。
(2)在全局变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用域。
2.局部变量和它的作用域
凡是在子程序内部使用的变量,必须在子程序中加入说明。这种在子程序内部说明的变量称为局部变量。局部变量的作用域是其所在的子程序。形式参数也只能在子程序中有效。因此也属于局部变量。局部变量的作用域分为两种情况:
(1)当外层过程序的局部变量名和嵌套过程中的局部变量不同名时,外层过程的局部变量作用域包含嵌套过琛。
(2)当外层过程的局部变量名和嵌套过程内的局部变量名同名时,外层局部变量名的作用域不包含此过程。
以上是JavaScript,接下来是java的探讨
请看图片:
结果是:
这个结果很清晰的证明在java的方法体中使用的a是等于100的
再看我修改
此时我们发现结果是100000
不难得出结论:
java在同名的变量定义前事使用全局变量的之后就是后定义的!这点和JavaScript是有区别的!


相关文档:

解决ie6下Javascript页面跳转和表单提交问题

经常在ie6下出现javascript页面跳转和表单提交问题,ie6下实现javascript页面跳转和表单提交需要进行特别处理,需要使用setTimeout()函数延迟实现。
1,兼容各浏览器的Javascript页面跳转
setTimeout(function(){
window.location.href = url;
},0);
2,兼容各浏览器的Javascript表单提交
setTimeout(function ......

常用正则表达式,常用表单验证javascript代码

function f_MobilCheck(as_SourceString)
{
 if(as_SourceString.match(/^13[0-9]{9}$/g)) return true;  //手机号为13开头的11位数字
 else if(as_SourceString.match(/^[0]{1}[0-9]{2,3}[2-8]{1}[0-9]{5,7}$/g)) return true;  //小灵通为0开头的3-4位的区号+不以1和9开头的6-8位数字
 retur ......

学习《JavaScript高级程序设计》学习笔记(三)

第三章   对象基础
      在javaScript中,对象是无特定顺序的值的数组。
一、对象的类型
    分为本地对象、内置对象和宿主对象三种,其中内置对象也属于本地对象。
二、本地对象:
    1、Array类,数组类。
      ......

java数值类型自动转换原则

在Java中使用数值进行二元操作时,先要将两个操作数转换为同一种类型,自动转换原则如下:
如果两个操作数中有一个是double类型的,那么另一个操作数将会转换为double类型;
否则,如果其中一个操作数是float类型,那么另一个操作数将会转换为float类型;
否则,如果期中一个操作数是long类型,那么另一个操作数将会转换 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号