Javascript 如果使用let,则在控制台中未定义

Javascript 如果使用let,则在控制台中未定义,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在学习ES5,刚刚遇到了主题“this”。 因此,在进行实验时,当我使用'var'关键字(假设'name')定义一个变量并将其记录为this.name时,我得到了正确的输出。但如果我对“let”也这么做,那就是给予未定义的东西。为什么呢 // using var var name = 'roshan'; console.log(this.name); function f(){ console.log(this.name); } f(); // using let let name1

我正在学习ES5,刚刚遇到了主题“this”。 因此,在进行实验时,当我使用'var'关键字(假设'name')定义一个变量并将其记录为this.name时,我得到了正确的输出。但如果我对“let”也这么做,那就是给予未定义的东西。为什么呢

// using var
var name = 'roshan';
console.log(this.name);
function f(){
   console.log(this.name);
}
f();

// using let
let name1 = 'roshan1';
console.log(this.name1);
function f1(){
   console.log(this.name1);
}
f1();
 

[![image of console][1]][1]
  [1]: https://i.stack.imgur.com/cA5WQ.png

顶级
var
被秘密地放在窗口或全局对象上。因此访问
window.name
可以与您的var交互,如果
this===window
,那么
this.name