关于关键字var、let、const关键字在五个自执行函数中用相同的代码展示的结果不一样

img

img

img

const 是声明一个常量。只能在声明时赋值一次。声明之后不能重新赋值。也不能重复声明。

你num4函数中
const age = 22;
const age = 23;
重复声明了,产生错误

let 是声明一个块作用域变量。可以在声明之后重新赋值。但也是不能重复声明。重复声明也会产生错误。
var 是声明一个函数作用域变量。可以重复声明。重复声明会被忽略,不会产生错误。

再有就是let、const不能在声明之前被访问,否则会产生错误。
而var有声明提升的特性,就是不论var语句写在哪里,都会自动提升到当前作用域的最前面。注意:只是声明提升,变量的赋值不会提升。
比如你num2函数中

(function num2() {
    console.log(age);
    var age = 20;
})()

在解析时就会变成下面的形式

(function num2() {
    var age;
    console.log(age);
    age = 20;
})()

如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮