如果不是窗口,谁会保留对变量的引用? [复制]
Posted
技术标签:
【中文标题】如果不是窗口,谁会保留对变量的引用? [复制]【英文标题】:If not window who does keep reference to the variable? [duplicate] 【发布时间】:2020-10-29 02:21:09 【问题描述】:以下代码我以三种不同的方式运行,但只有一种可以正常运行。 我不明白为什么。如果不是窗口,你能告诉我谁会保留对变量的引用吗?
脚本:
'use strict';
let s = function();
试一试****************************************
s();
控制台:好的
尝试 2******************************************
window.s();
控制台:错误
TypeError: window.s 不是函数
尝试 3****************************************
this.s();
控制台:错误
TypeError: this.s 不是函数
【问题讨论】:
That's just howlet
works。它在文件的范围内,为什么它需要是某个对象的属性?
相关:Do let statements create properties on the global object?.
【参考方案1】:
let 只能在它声明的范围内可用(块的范围) 使用 var ,它在全局范围内定义一个变量 ....
试试
'use strict';
var s = function();
'use strict';
var s = function();
// TRY 1**********************************
s();
// TRY 2**********************************
window.s();
// TRY 3**********************************
this.s();
【讨论】:
【参考方案2】:let
不会创建 window
的属性。
就像 const 一样,当全局声明时(在最顶层范围内)MDN,let 不会创建窗口对象的属性。
【讨论】:
以上是关于如果不是窗口,谁会保留对变量的引用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章