var a = b = 10; b也属于imply global
window上的属性都具有全局作用域: 在JavaScript中,window == Global
全局作用域存在一定的弊端:如果张三和李四同时都在自己的全局定义同一个全局变量,则会发生变量的覆盖。
2.2 局部作用域
与全局作用域相反,局部作用域内的变量只能被定义它的局部作用域访问。
- 函数作用域
函数作用域里的变量和函数只能由函数内部访问
function foo() {
var localVar = ‘local’
function localFunc() {
console.log(local)
}
localFunc() // local
}
localFunc() // 报错
作用域是分层的,内部函数可以访问外部函数作用域里的变量,反之不可以(作用域链)。
function foo() {
var localInnerVar = ‘localInner’
function localFunc() {
console.log(local)
}
localFunc() // localInner
}
注意:快语句(
{}内的语句),比如if,while等,不会创建新的作用域。
if (1) {
var a = 10
}
console.log(a) // 10
- 块级作用域
ES6新增了let和const两种声明变量的命令,所声明的变量只能在指定块的作用域内被访问。
- 不会发生变量提升
console.log(b) // undefined
console.log(a) // Uncaught ReferenceError: a is not defined
let a = ‘i am there’
var b = ‘i am here’
- 不允许重复声明
console.log(a) // Identifier ‘a’ has already been declared
var a = ‘the first’
let a = ‘the second’
- 常见闭包问题解决
在学习闭包问题的时候,很容易写出类似下面的代码
var arr = [];
for (var i = 0; i < 10; i++) {
arr[i] = function() {
console.log(i);
}
}
arr0 // 10
最终返回的结果是10,把所有的arr执行一遍,发现最后的结果都是10。
当时我们采用立即执行函数的方式来解决上面的闭包问题:
var arr = [];
for (var i = 0; i < 10; i++) {
(function (i) {
arr[i] = function() {
console.log(i);
}
}(i))
}
arr0 // 0
立即执行函数解决上述闭包问题,其实就是借助了作用域链方面的知识,相当于给arr[i]函数的外层添加了一层作用域。但当我们学习let之后,解决上面问题就简单多了。
var arr = [];
for (let i = 0; i < 10; i++) {
arr[i] = function() {
console.log(i);
}
}
arr0 // 0
JavaScript函数执行时,首先会在自身的AO中查找对应属性值,若查找不到,则会去父级的AO上找,在查找不到则再去父级的父级查找,直到找到根window对象,这样形成的“AO链”就是作用域链。
下面以一个例子来模拟整个作用域链的流程:
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
901

被折叠的 条评论
为什么被折叠?



