在函数中调用变量
1.会先在 函数内部寻找这个变量
如果有,就调用函数内部定义的变量
2.如果函数内部没有定义这个变量,再去全局作用域,找是否有这个变量
如果有,就调用全局的作用域变量
3.如果全局和局部都有,调用局部作用域变量
必须要注意: 如果本身没有定义变量,只会找全局作用域中的变量
不会找 自己内部嵌套的 函数中的变量
// // 变量的调用原则
var int1 = 500;
function fun1() {
var int1 = 100;
function fun2() {
// fun2中的局部作用域变量int1
// 只能在 fun2 中使用 fun2外部是不能调用的
// fun1中 操作执行 int1 永远不会是 定义在 fun2中的int1
var int1 = 1000;
}
return int1;
}
console.log( fun1() ); //100
函数中,变量的赋值原则
1.函数中,自己有这个变量
就赋值操作自己的局部作用域变量
var int1 = 100;
function fun3() {
// 如果 函数中 有这个变量,就会操作函数中,局部作用域的这个变量
// 不会 操作 全局作用域变量
var int1 = 200;
int1 = '北京你好';
console.log( int1 ); // 北京你好
}
fun3();
console.log( int1 ); // 100
2.如果自己没有,就去全局作用域中找这个变量
如果有,就赋值操作这个变量
var int1 = 100;
function fun3() {
// 函数中本身没有int1,去全局作用域,找int1
// 有的话,就操作这个int1
int1 = '北京你好';
}
fun3();
console.log( int1 ); //北京你好
3.如果所有的作用域都是没有这个变量
赋值语句,升级为,定义变量的语句
定义一个 全局作用域变量 并且赋值
function fun3() {
// 如果所有的作用域中,都没有这个变量int1
// 这个 赋值语句 会变化升级为 定义变量语句
// 会定义一个全局作用域变量 并且赋值
int1 = '北京你好';
}
fun3();
console.log( int1 ); //北京你好
进阶案例
var str1 = '上海';
console.log( str1 ); //上海
fun4();
console.log( str1 ); //张家口
function fun4(){
str1 = '张家口';
console.log( str1 ); //张家口
fun5();
console.log( str1 ); //张家口
}
function fun5(){
var str1 = '北京';
console.log( str1 ); //北京
}

Comments | NOTHING