1.变量的作用域
var name = "张"; //全局变量
function test() {
var age = 19; //局部变量
console.log(age); //局部变量,输出结果 19
console.log(name); //通过作用域链找到全局变量
}
test();
console.log(age); //局部变量在函数外部不可访问
console.log(name); //全局变量,输出结果 张
if语句中的变量是全局变量
var num = 5;
if (num > 3) {
var sum = 7;
}
console.log(sum); //输出结果 7
for语句中的变量是全局变量
for (var i = 0; i < 10; i++) {
console.log(i); //输出1,2,3,4,5,6,7,8,9
}
console.log(i); //仅仅输出for语句的最后的执行结果 10
全局变量的执行顺序
var name = "小明"; //全局变量
function f() {
name = "小红"; //全局变量
}
f();
console.log(name); //输出结果 小红
题目1
var color = "yellow";
function getColor() {
var anotherColor = "red";
function swapColor() {
var tmpColor = color;
color = anotherColor;
anotherColor = tmpColor;
}
swapColor();
}
getColor();
console.log(color); //输出结果 red
题目2
var num = 10;
fun();
function fun() {
var num; //声明提前,赋值不提前
console.log(num); //输出结果 undefined
var num = 12;
}
题目3
var a = 18;
fun();
function fun() {
var b = 9;
console.log(a); //输出结果 undefined
console.log(b); //输出结果 9
var a = '123';
}
题目4
f1();
console.log(c); //9
console.log(b); //9
console.log(a); //undefined
function f1() {
var a = b = c = 9; //相当于 var a = 9; b= 9; c = 9;
console.log(a); //9
console.log(b); //9
console.log(c); //9
}