函数调用变量与赋值变量的原则

一、调用变量
调用变量时

  1. 会先在当前作用域中找是否有这个变量,如果有,就直接使用这个变量。
    函数调用变量与赋值变量的原则
    函数调用变量与赋值变量的原则
  2. 如果没有,去父级作用域寻找,如果父级作用域有这个变量,就使用这个变量
    函数调用变量与赋值变量的原则
    函数调用变量与赋值变量的原则
  3. 如果父级作用域没有这个变量,再向上一层寻找,如果找到这个变量就直接使用,如果所有的作用域都没有这个变量,结果就会报错
    函数调用变量与赋值变量的原则
    函数调用变量与赋值变量的原则
    二、赋值变量
    1.只有局部作用域int,没有全局作用域int
    函数调用变量与赋值变量的原则
    函数调用变量与赋值变量的原则
    此时,int = 200 赋值的是局部int,函数内部调用的是局部int,值就是200,在函数外部调用的int是全局int,因为全局int不存在,所以结果是报错。
    2.局部作用域、全局作用域都有
    函数调用变量与赋值变量的原则
    函数调用变量与赋值变量的原则
    此时在函数内部赋值的是局部int,调用的也是局部int,所以在函数内部调用的int就是200,在函数外部调用的是全局int,此时值就是北京。
    3.有全局变量,没有局部
    函数调用变量与赋值变量的原则
    函数调用变量与赋值变量的原则
    此时在函数内部赋值的就是全局变量的int,函数内部调用的也是全局变量int,所以此时函数内部调用的值就是200,在函数外部调用的是全局变量,所以外部调用的值也是200。
    4.全局int,局部int全都没有
    函数调用变量与赋值变量的原则
    函数调用变量与赋值变量的原则
    此时在函数内部的赋值语句升级为定义变量语句,定义int并且赋值200,而且此时的int还是全局变量int在函数外部就能调用,在函数内部输出的是内部int,但是是全局int,在函数外部调用的是全局变量int。