函数中变量的作用域以及变量提升
函数中变量的作用域以及变量提升
一、变量作用于域
1、函数就是一种特殊的变量
2、 一般函数内部不嵌套,可读性差
3、变量的作用域向上寻找,距离该变量最近的{ },变量的作用域就是在该{ }的范围之内
看简单代码案例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//函数就是一种特殊的变量
//一般函数内部不嵌套函数,可读性差。
function aa(){
var a =10;
//变量的作用域向上寻找,距离该变量最近的函数的大括号
//变量的作用范围,就是该{}之内的范围.
function bb(){
console.log(a);
}
}
aa();
bb();
/* bb这个函数夹在aa这个函数里面,相当于在函数内部定义了一个变量即她是一个局部变量
,所以在函数aa外部执行bb()是会报错的。*/
console.log(a);
</script>
</body>
</html>
执行结果:console中显示bb没有定义
二、变量提升
1、 变量会把作用域提升到整个作用域的最前面,赋值还是在原来的位置。
2、全局变量和局部变量同时存在。优先局部
实例一:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
console.log(a);
var a=10;
//变量会把作用于提升到整个作用域的最前面。
//赋值还是在原来的位置
//相当于
var a;
//console.log(a);得到的值为undefined
a=10;
</script>
</body>
</html>
实例二:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
console.log(a);
var a=10;
//变量会把作用于提升到整个作用域的最前面。
//赋值还是在原来的位置
//相当于
var a;
//console.log(a);得到的值为undefined
a=10;
</script>
</body>
</html>
执行结果均为undefined;可以赋值代码试一试;
还没有评论,来说两句吧...