JS-变量的调用和变量的赋值

1,038 阅读2分钟

「这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战

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

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

①变量的调用

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 , 没有全局作用域

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

图:调用变量:1-3

1.局部 int 存在

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述