认清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是有区别的!
相关文档:
转自:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>图片跑马灯</title>
</head>
<body>
<div style="overflow:hidden; width:350px" id='div'>
<!-- 这里是第一个关键点,o ......
1. javascript 是区分大小写的,包括变量、函数名等等。
2. javascript 中的变量是弱类型的,定义变量时只用 var 运算符。
var test1 = "hi";
或者
var test1 = "hi",test2 = "hello";
或者(可以是不同的类型)
var test1 = "hi",test2 = 12;
或者(可以不用初始化)
var test1;
3. javascript 每条语句的结尾&ldqu ......
采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可:
String sql= "select * from users where username=? and password=?;
PreparedStatement preState = conn.prepare ......
ANT_HOME D:\apache-ant-1.8.0-bin\apache-ant-1.8.0
AXIS2_HOME D:\axis2-1.5.1
MAVEN_HOME D:\apache-maven-2.2.1
java_home C:\Program Files\Java\jdk1.6.0_18
path C:\ProgramFiles\Java\jdk1.6.0_18\bin;%AXIS2_HOME%/bin;%MAVEN_HOME%\bin;
%ANT_ ......