JavaScript--Function, Variable作用域

一、在执行JavaScript语句前,首先将所有的declaration都提到其所在scope的顶部(注意:只提取declaration,不提取initialization) 

也就是说,解释器在执行某个函数或者initialize某个变量前,首先将这些内容提取到其所在scope的顶部

Demo function定义:

<html>
	<head>
		<script type="text/javascript">
						varFunction("第一次调用");//第一次调用
						var varBefore = "I'm varBefore";
						varFunction("第二次调用");//第二次调用
						function varFunction(invokeSeq){
							alert(invokeSeq+": varBefore=" + varBefore);
							alert(invokeSeq+": varEnd=" + varEnd);
							alert(invokeSeq+": varMiddle=" + varMiddle);
							alert(invokeSeq+": varFunction=" + varFunction);
					    return 1;
						}
						varFunction("第三次调用");//第三次调用
						var varMiddle = "I'm varMiddle";
						varFunction("第四次调用");//第四次调用
						var varEnd = "I'm varEnd";
						varFunction("第五次调用");//第五次调用
		</script>
	</head>

	<body οnlοad="message()">
	</body>
</html>
Demo variable定义:
<html>
	<head>
		<script type="text/javascript">
						var varBefore;
						function varFunction(invokeSeq){
							alert(invokeSeq+": varBefore=" + varBefore);
							alert(invokeSeq+": varEnd=" + varEnd);
							alert(invokeSeq+": varMiddle=" + varMiddle);
							alert(invokeSeq+": varFunction=" + varFunction);
					    return 1;
						}
						var varMiddle;
						var varEnd;
						
						varFunction("第一次调用");//第一次调用
						varBefore = "I'm varBefore";
						varFunction("第二次调用");//第二次调用
						varFunction("第三次调用");//第三次调用
						varMiddle = "I'm varMiddle";
						varFunction("第四次调用");//第四次调用
						varEnd = "I'm varEnd";
						varFunction("第五次调用");//第五次调用
		</script>
	</head>

	<body οnlοad="message()">
	</body>
</html>

二、如果函数定义和变量定义重名

Variable initialiazation> Function declaration> Variable declaration

Demo function and variable定义:

<html>
	<head>
		<script type="text/javascript">
						alert(typeof value);// function. (Function declaration > Variable declaration)
						alert(value);// function content. (Function declaration > Variable declaration)
						alert(value());// 1
						
						// Both function and variable declaration will be hoisted to the top
						// of containing scope before javascript intepreter executes any code
						var value;
						function value(){
					    return 1;
						}
						
						value = 10000;
						alert(typeof value);//number. (Variable initialization > Function declaration)
						alert(value);// 10000. (Variable initialization > Function declaration)
						alert(value());// Error. Because value is a variable, not a function any longer
		</script>
	</head>

	<body οnlοad="message()">
	</body>
</html>


 问题:

如果 html 中,有多个 <script type="text/javascript"></script>,那么,这些<script></script>中的functioin, variable之间有关系吗?可以相互覆盖嘛?

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值