一.函数调用变量赋值变量的原则

在函数中,调用变量和对变量赋值的原则

①变量的调用

var int = '北京';

function fun1(){

    var int = 100;

    console.log(int);

    function f1(){
        var int = '反正不用';
    }
}

fun1();    →  100

调用变量的原则
会先在当前作用域中,找是否有这个变量
如果有,就直接使用这个变量
如果没有,去父级作用域寻找这个变量
如果父级作用域有这个变量,就使用这个变量
如果父级作用域没有这个变量,再向上一层寻找
如果找到这个变量,就直接使用
如果所有的作用域都没有这个变量,执行结果是报错
只会向父级作用域找变量,不会向子级作用域找变量

②变量的赋值

var int = '北京';

function fun2 (){
    var int = 100;

    int = 200;  

    console.log(int);
}

fun2();   →   200

函数之前的调用,只能调用全局作用域的int

如果全局作用域没有int,则函数内部,赋值语句升级定义的全局变量
调用的就是 函数内部的的变量,int
console.log(int);

变量的赋值原则
先在当前作用域中找变量,如果有,就对这个变量进行赋值
如果当前作用域没有这个变量,去父级作用域找这个变量
如果父级也没有这个变量,再去父级找变量
如果所有的作用域都没有这个变量
赋值语句,升级为定义变量语句,并且定义的是全局作用域变量
不会去子级找变量赋值

记住一句话: 定义变量,一定要写 var 关键词,不管是局部还是全局

图:赋值和调用:1-4

1.只有局部作用域int , 没有全局作用域

javascript 实际参数 赋值给变量 js将函数赋值给变量_javascript


2.全局、局部作用于域都有变量

javascript 实际参数 赋值给变量 js将函数赋值给变量_赋值_02


3.有全局int , 没有局部 int

javascript 实际参数 赋值给变量 js将函数赋值给变量_作用域_03


4.局部、全局 都没有 var一个int

javascript 实际参数 赋值给变量 js将函数赋值给变量_赋值语句_04


5.局部全部都有int 但是函数有参数

var a=10; function fn(a){ a=20; console.log(a) } fn(a); console.log(a)
结果是输出  20  10

图:调用变量:1-3

1.局部 int 存在

javascript 实际参数 赋值给变量 js将函数赋值给变量_作用域_05


2.局部int 没有 ,全局 int 有

javascript 实际参数 赋值给变量 js将函数赋值给变量_作用域_06


3. 局部int ,全局int都没有

javascript 实际参数 赋值给变量 js将函数赋值给变量_javascript_07