1、var【聲明變量】
var 沒有塊的概念,可以跨塊訪問,無法跨函數訪問;
2、let【聲明塊中的變量】
let 只能在塊作用域里訪問,不能跨塊訪問,也不能跨函數訪問;
3、const【聲明常量、一旦賦值不可更改】
const 只能在塊作用域里訪問,而且不能修改值
<script> console.log('1、var定義的變量可以修改,如果不初始化會輸出undefined,不會報錯'); var a = 1; // var a;//不會報錯 console.log('函數外var定義a:' + a); //可以輸出a=1 function change() { a = 4; console.log('函數內var定義a:' + a); //可以輸出a=4 } change(); console.log('函數調用后var定義a為函數內部修改值:' + a); //可以輸出a=4 console.log('----------------------------------'); console.log('2、let是塊級作用域,函數內部使用let定義后,對函數外部無影響'); let c = 3; console.log('函數外let定義c:' + c); //輸出c=3 function change() { let c = 6; console.log('函數內let定義c:' + c); //輸出c=6 } change(); console.log('函數調用后let定義c不受函數內部定義影響:' + c); //輸出c=3 console.log('----------------------------------'); console.log('3、const定義的變量不可以修改,而且必須初始化'); const b = 2; //正確 // const b;//錯誤,必須初始化 console.log('函數外const定義b:' + b); //有輸出值 b = 5; console.log('函數外修改const定義b:' + b); //無法輸出 </script>
