javascript基础之二(变量作用域的各种啃)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JavaScript变量作用域的各种啃</title>
</head>
<script>
//JavaScript只有两种作用域,全局作用域和局部作用域,没有块作用域(也就是双括号{}内部
var vout="outer";
(function fun(){
	var v="hello";
	console.info(v);
})();
//console.info(v);//v is undefiend

//JavaScript变量提升问题,解决此问题最好将要定义的变量都放在函数最前面,进行集中定义
(function(){
	console.info(vout);//输出 undefined, 因为本函数后面定义的变量vout 将会放在本函数内的最前面,相当于在函数内前方加入了(var vout;但没有指定值)
	var vout="word";
})();

//内外部变量同名的各种啃
console.info("内外部变量同名的各种啃");
console.info(vout);//输出outer
function fun1(){
	var vout="inner";//如果在变量前写var关键字,则为定义内部变量
	console.info(vout);//输出 inner	
}
fun1();

console.info(vout);//输出outer
function fun2(){
	vout="inner";//如果没有在变量前写var关键字,则默认访问外部变量,即此处定义的vout还是指向外部的vout
	console.info(vout);//输出 inner	
}
fun2();
console.info(vout);//输出inner,因为在fun2 函数里改了
//javascript 变量的查找过程
console.info("javascript 变量的查找过");
var color="red";
function outer(){
	//var color="blue";
	function getcolor(){
		return color;
	}	
	console.info(getcolor());//JavaScript会从最内层函数开始查找,直到window,直到找到相应变量 返回
}
outer();
</script>
<body>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值