如果不是 window 谁保留对变量的引用?

If not window who does keep reference to the variable?

以下代码我 运行 以三种不同的方式使用,但只有一种可以正常运行。 我不明白为什么。你能告诉我,如果不是 window 谁保留对变量的引用?

脚本:

'use strict';

let s = function(){};

尝试 1********************************* *

s();

控制台:确定

尝试 2********************************* *

window.s();

控制台:错误

TypeError: window.s 不是函数

尝试 3********************************* *

this.s();

控制台:错误

TypeError: this.s 不是函数


let 不会创建 window 的 属性。

Just like const the let does not create properties of the window object when declared globally (in the top-most scope) MDN.

let 只能在它声明的范围内可用(块的范围) 使用 var ,它全局定义了一个变量....

尝试

'use strict';
var s = function(){};

'use strict';

var  s = function(){};
// TRY 1**********************************

s();

// TRY 2**********************************

window.s();


// TRY 3**********************************

this.s();