Aloehuang 最近的时间轴更新
Aloehuang

Aloehuang

V2EX 第 285486 号会员,加入于 2018-01-22 19:45:46 +08:00
Aloehuang 最近回复了
2020-05-05 11:57:12 +08:00
回复了 Aloehuang 创建的主题 JavaScript 关于词法作用域和闭包的一点疑问
@zackwan95 真写代码肯定不会这样写啊,只是面对和自己预期不相符的结果时,是不是应该探究一下为什么和预期不符呢。要是真写代码这样写自己都会疯掉,无时无刻不要注意 js 语言的规则。
2020-05-05 11:53:19 +08:00
回复了 Aloehuang 创建的主题 JavaScript 关于词法作用域和闭包的一点疑问
@leihongtao1230 对啊,我搞混了,现在清晰了很多。大佬一针见血说出了我迷惑的地方。
2020-05-05 11:51:52 +08:00
回复了 Aloehuang 创建的主题 JavaScript 关于词法作用域和闭包的一点疑问
@xiaoming1992 不是 use strict 的问题
2020-05-05 11:47:49 +08:00
回复了 Aloehuang 创建的主题 JavaScript 关于词法作用域和闭包的一点疑问
@whoami9894 谢谢,上午抽空继续学习了下,理解了。我其实是把变量查找的原理(词法作用域)和执行栈、执行上下文混在一起了。
你上面那段代码在 addtwo 中没有找到 a,于是从父级执行上下文寻找,但这个父级执行上下文有两种理解方式:第一种,执行上下文栈层面上的父级,也就是从哪个函数调用那么该函数就是父级执行上下文;第二种,作用域链层面上的父级(或者词法层面上的父级)。虽然有执行上下文栈,每调用一个函数就生成新的执行上下文并压入栈中,但是作用域链并不是和执行上下文栈一一对应的,作用域链由词法作用域导出,通常作用域链长度小于等于执行上下文栈的长度。
上面那段代码在 addtwo 中没有找到 a,就从父级执行上下文找,但 addone 和 addtwo 实际上在词法层面上是同级的,所以这个父级执行上下文就是全局执行上下文。自然输出 0 。
下面的父级执行上下文是 addone 函数执行时创建的执行上下文,所以输出 10 。
2020-05-04 12:15:54 +08:00
回复了 Aloehuang 创建的主题 JavaScript 关于词法作用域和闭包的一点疑问
@Dyon 那第三个函数为什么不从第二个函数里面找 a
2020-05-04 12:14:23 +08:00
回复了 Aloehuang 创建的主题 JavaScript 关于词法作用域和闭包的一点疑问
@secondwtq 谢谢,一针见血
2020-05-04 11:57:13 +08:00
回复了 Aloehuang 创建的主题 JavaScript 关于词法作用域和闭包的一点疑问
@rabbbit 有没有这方面的文章可以看看?您这样说不是特别理解
2020-05-04 11:53:36 +08:00
回复了 Aloehuang 创建的主题 JavaScript 关于词法作用域和闭包的一点疑问
@YadongZhang var 和 let 在这里没有区别,结果都是 0.
你给的网站内容太多了,找不到具体要查找的问题
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2843 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 12:27 · PVG 20:27 · LAX 04:27 · JFK 07:27
Developed with CodeLauncher
♥ Do have faith in what you're doing.