# 解释:写在函数里面的变量不论是什么类型,外部都无法访问;函数作用域指的就是函数
<script>functiontest(){var a=1let b=2const c=3}test()
console.log(a);//Uncaught ReferenceError: a is not defined
console.log(b);//Uncaught ReferenceError: b is not defined
console.log(c);//Uncaught ReferenceError: c is not defined</script>
块作用域
# 解释:只有let、const作用于块;块作用域指的就是比如if、for、while等等这种类型
<script>if(1){var a=1}if(1){let b=2}if(1){const c=3}
console.log(a)// 1
console.log(b)// Uncaught ReferenceError: b is not defined
console.log(c)// Uncaught ReferenceError: c is not defined </script>
# 暂时性死区,即不能变量提升,通俗来说就算先定义再使用(相反的是var可以先使用再定义)
console.log(a);//Cannot access 'a' before initialization
console.log(b);//Cannot access 'b' before initializationlet a =66;const b =100;
重复定义
# let、const不可重复定义,重复后会报错;var可以,且取最近一次赋值
const b=1;const b=20;// Identifier 'b' has already been declaredvar a=10var a=20
console.log(a)// 20