js中函数赋值给let变量的this问题

1.第一种写法
var fun = function() {console.log('fun')}
this.fun()

2.第二种写法
let fun = function() {console.log('fun')}
this.fun()

第一种写法正常执行,
第二种写法出现【this指向.html:26 Uncaught TypeError: this.fun is not a function】的问题,为什么?

let声明一个作用域或被限制在块级中的变量、语句或者表达式。与var不同的是,它声明的变量只能是函数块的。块级变量并不被全局的this所引用。所以通过this.fun是未定义的。

就是let声明的变量不会提前。

能再说明白点吗?