请教这段代码的两个问题?
const myName = 'global name'
var descript = 'global desc'
function fn(){
console.log(myName, descript)
console.log(this.myName, this.descript)
}
fn()
如上代码,在最新版Chrome控制台执行结果是
global name global desc
undefined 'global desc'
在Node.js(16.17.0)中执行结果是
global name global desc
undefined undefined
有2个问题(1)为什么两个地方的this.descript结果不同(2)直接输出myName,在fn中找不到应该是去外边的全局环境找,但是myName是用const声明的,不会成为全局对象的属性,为什么还能找到?
回复
1个回答

test
2024-07-18
因为this
;对于变量的查找两边是一致的这没什么好说的。但是this
是上下文,在chrome中执行,this
指向的是window
【非严格模式下】,而var
在全局中执行时也会挂载在window
上,所以this.descript
有值。在node
里,代码都会隐式的被包裹在一个函数里,所以你在文件中声明的变量是局部的,并不会挂载在全局上,所以都是undefined
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容