js作用域

作用域 就是代码名字(变量)在某个范围内起作用和效果,目的是为了提高程序的可靠性更重要的是减少命名冲突

作用域(es6)之前:全局作用域 局部作用域

全局作用域:整个script标签或者是一个单独的js文件

局部作用域(函数作用域):在函数内部就是局部作用域,这个代码的名字只在函数内部起效果和作用


变量的作用域:根据作用域的不同分为两种 全局变量跟局部变量

全局变量:在全局作用域下的变量(如果在函数内部没有声明直接赋值的变量也叫全局变量,但是不建议使用)
function fun(){num2 = 20} num2也是全局变量
局部变量:在局部作用域下的变量(在函数内部的变量,函数的形参也可以看成局部变量)

区别:从执行效率来看

全局变量只有浏览器关闭的时候才会销毁,比较占内存资源
局部变量当程序执行完毕就会销毁,比较节约内存资源

块级作用域

现阶段js没有块级作用域,在es6中新增的块级作用域
块级作用域就是用 {} 花括号包含的,在块级作用域定义的变量,外部不能调用。

作用域链

内部函数访问外部函数的变量,采取的是链式查找的方式来决定取哪个值,这种结构称为作用域链(类似于就近原则)
var num = 10
function fu(){ var num = 20; function fun(){ console.log(num) } } 会打印出20(先去上一级fn()查找,如果没有num才会去全局变量num查找,如果fn()有num变量,就会返回num
变量的值)

有问题可直接留言,望各位与我都可以成为技术大牛。
原文地址:https://www.cnblogs.com/xhxdd/p/13177415.html