作用域指变量的有效范围,一般分为全局和局部的,局部的一般是指定义在花括号{}之内的,函数内内嵌了至少一个作用域(一对花括号构成一个作用域),由于内嵌了很多作用域,所以这些变量因为定义在不同的作用域而生效范围不同。
局部变量
范围:在一个函数内部定义的变量,作用范围只限于本函数体内。
生存期:程序执行到本函数才会给局部变量分配内存单元,函数执行完毕局部变量所占的存储单元就被释放
静态局部变量
范围:函数体内,离开函数体就不起作用,但是值仍然被保留,下次被调用的时候使用的是上次的值
生存期:在编译阶段赋值,从程序运行开始就被分配固定的存储单元(静态存储区),整个程序运行期间不再重新分配,生存周期是整个程序运行期间
JS函数中如果要调用某个变量,它首先从函数内去查找。如例子中就是 a 是等于6;而在函数体内找不到c,于是,它就会在函数体外,往上找,找到即调用,找不到则报错。(JS由内而外)