在说变量作用域之前先了解以下几个概念
块级作用域:在其他语言中,任何一对花括号内的语句都属于一个块,在这个块中定义的所有变量在代码外部都是不可见的,但是在js中,外部可以访问
{
var age=12;
}
console.log(age); //控制台输出12
全局变量:定义在script标签中或者不属于某个函数的变量,在任何地方都可以访问的变量
var name="javascript";
//在全局中使用变量name
console.log(name) //控制台输出javascript
//在函数中使用变量name
function show (){
return name;
}
console.log(show()); //控制台输出javascript
局部变量:仅仅在当前作用域可以访问,在其他地方无法访问
function add(a,b){
var sex="nan";
var sum=0;
sum=a+b;
return sum;
}
console.log(add(4,5)); //9
// console.log(sex);//显示sex not defined
js中全局和局部的概念仅仅体现在函数中,事实上js中没有严格的局部和全局的概念
- 注意事项:
- 函数内部可以访问到该函数所属的外部作用域的变量(作用域链)
- 不使用var声明的变量是全局变量,不推荐使用
- 变量退出作用域后会销毁,全局变量关闭网页或者浏览器后才会销毁