<!DOCTYPE HTML>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>变量的作用域</title>
<script type="text/javascript">
/*
//声明同一个变量后者会覆盖前者所以输出的应该是最后一个变量值
var foo = "Hello World 1";
foo = "Hello World 2";
document.write( foo );
*/
/*
//全局作用域下的变量
var foo = "Hello World";
//window对象下的属性
foo = "Hello World";
//页面输出为true说明两者值相同
document.write( window.foo == foo );
*/
/*
//变量var foo只定义在函数func内
function func(){
//加var之后变量foo只在函数func内部生效
var foo = "Hello";
//但如果去掉var变量foo就会变成window下的对象这时就和window.foo一样了,所以将会输出true
//去掉var后的变量foo就变成了一个全局变量
//foo = "Hello";
}
func();
//页面输出为false说明两者值不相同,var foo 不等于 window.foo
document.write( window.foo == "Hello");
*/
//这是全局变量
var yourName = "阿四";
myName = "校长";
//在函数内部也可以调用全局变量
function ChangeName(){
document.write("你的名字是" + yourName + "<br/>");
document.write("我的名字是" + myName + "<br/>");
//var yourName是局部变量 myName依然是全局变量,所以输出为underfind
//下面的myName不会覆盖上面的myName,所以输出依然为校长而不是xiaozhang
var yourName = "a4";
myName = "xiaozhang"
};
//执行ChangeName函数
ChangeName();
//输出全局变量 第二个函数内部的myName将会覆盖上面的myName所以输出为xiaozhang
//yourName将会输出上面的yourName的值阿四,因为下面的函数内部的yourName只在函数内部生效
document.write(myName + "喜欢" + yourName);
</script>
</head>
<body>
</body>
</html>