在函数中调用变量
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