浅谈Javascript变量作用域,初学遇到的困惑(下)

函数里命名的变量

在函数里命名的变量是局部变量,也就是在函数外是读不到的:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	function f1(){
		var a = 1;
	}
	console.log(a);   //报错,读不到
</script>
</head>
<body>
<script>
	console.log(a);   //报错,读不到
</script>
</body>
</html>

那么他的特点可以由以下三个代码展示:
一:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	var a = 2;
	function f1(){
		var a = 1;
		console.log(a); //显示:1
	}
	f1();  //这样fi()里的a就是在函数里的作用域了
	console.log(a);   //显示:2,读的是全局a
</script>
</head>
<body>
<script>
	console.log(a);   //显示:2,读的是全局a
</script>
</body>
</html>

更加验证了外面是读不到里面的a的,函数里面命名的a也没有干预到外函数面的a。
二:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	var a = 2;
	function f1(){
		a = 1;  
		console.log(a); //显示:1
	}
	f1();  //这样fi()里的a就是在函数里的作用域了
	console.log(a);   //显示:1,f1()里的a没有声明,这样就把全局的a给改了
</script>
</head>
<body>
<script>
	console.log(a);   //显示:1
</script>
</body>
</html>

在这里,函数体里的a这样表示,则表示的就是读写全局变量的a。
三:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	const a = 2;
	function f1(){
		a = 1;  //报错
		console.log(a); //不显示
	}
	f1();  //报错
	console.log(a);   //不显示
</script>
</head>
<body>
<script>
	console.log(a);   //能显示
</script>
</body>
</html>

这种情况就是const声明的特性啦,也是不能改写。

以上就是我总结的javascript的变量作用域范围和牛角尖的情况,只是想借自己的思考帮助初学者能更好的理解这个基础,仅仅讨论了这个范围,并没有太深入,如有大佬有什么指导意见欢迎指出哦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值