js中的变量作用域
2018-07-09 本文已影响0人
冒险小A
<script>
var num = 5;
if (num > 3) {
var sum=7;
}
console.log(sum);
// 此时打印结果会是什么呢?
</script>
这段代码打印结果为7而不是undefined
因为在js中,只有在函数内部声明才会是局部变量,否则是全局变量
此时就算在if里,也是全局变量
练习1:
<script>
var num = 10;
fun();
function fun() {
console.log(num);
var num = 20;
}
</script>
输出结果为:undefined
解析:
此时在函数内,会声明提前,相当于
function fun() {
var num;
console.log(num);
num = 20;
}
在函数内,优先去找函数内部的声明,所以var num = 10;
没有起到作用
练习2:
<script>
f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
var a=b=c=9;
console.log(a);
console.log(b);
console.log(c);
}
</script>
输出结果为:9,9,9,9,9,报错
解析:
此时等价于
<script>
f1();
console.log(c);
console.log(b);
console.log(a);
function f1() {
var a = 9;
b = 9;
c = 9;
console.log(a);
console.log(b);
console.log(c);
}
</script>
这里a为局部变量;b,c没有用var声明,为全局变量.