JavaScript-作用域与作用域链
Posted 天凉好个秋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript-作用域与作用域链相关的知识,希望对你有一定的参考价值。
一、JavaScript作用域:
1.就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性更重要是减少命名冲突。
2.js的作用域(es6)之前,分为全局作用域、局部作用域
全局作用域:整个script标签,或者是一个单独的js文件 。
var num=‘全局作用域‘;
局部作用域:在函数内部就是局部作用域,这个代码的名字再在函数内部起效果和作用
function fn(){ //局部作用域
var num=10;
}
二、变量作用域:
1.根据作用域的不同,变量可以分为全局变量和局部变量
全局变量:1.1在全局作用域下的变量
注意:在函数内部,没有声明var直接赋值的也是全局变量
var num=1;
console.log(num);
function fn(){
console.log(num);
}
fn();
局部变量:1.2在局部作用域下的变量,在函数内部的变量是局部变量
注意:函数的形参也可以看做是局部变量
function fn(){ var num=10;//num就是局部变量,只能在函数内使用 num1=20;//在函数内部没有var声明,直接赋值的变量属于全局变量 console.log(num); } fn();
2.从执行效率来看全局变量和局部变量
2.1 全局变量只有在浏览器关闭时才会销毁,比较占内存资源
2.2 局部变量当程序执行完毕就会销毁,比较节约内存资源
注:js中没有块级作用域,js作用域:全局作用域,局部作用域。现阶段没有,但js在es6新增了块级作用域
块级作用域{ } if{ } for{ }
三、作用域链:
内部函数访问外部函数的变量,采取的是链式查找的方式来取那个值,就近原则查找,这种结构称为作用域链。
var num=10; function fn(){//外部函数 var num=20; function fn1(){//内部函数 console.log(num);//输出的时20 } }
以上是关于JavaScript-作用域与作用域链的主要内容,如果未能解决你的问题,请参考以下文章