1、const
(1)給常量賦值並輸出
<script> <!--const定義的變量是一個常量,不可以修改,而且定義的時候必須給常量賦值--> const b = 2; console.log(b); </script>
測試:

可以正常輸出
(2)修改
<script> <!--const定義的變量是一個常量,不可以修改,而且定義的時候必須給常量賦值--> const b = 2; b=5; console.log(b); </script>

(3)不賦值
<script> <!--const定義的變量是一個常量,不可以修改,而且定義的時候必須給常量賦值--> const b; console.log(b); </script>

const可以保證數據的安全性,雖然不能改變對象的值,但是可以改變對象的指向。
2、var
(1)定義並賦值
<script> <!--var定義的變量可以修改,如果不初始化會輸出undefined,不會報錯--> var b=12; console.log(b); </script>

可以正常輸出
(2)修改值
<script> <!--var定義的變量可以修改,如果不初始化會輸出undefined,不會報錯--> var b=12; b=34; console.log(b); </script>

可以修改變量的值
(3)不賦值
<script> <!--var定義的變量可以修改,如果不初始化會輸出undefined,不會報錯--> var b; console.log(b); </script>

輸出undefined
(4)不聲明,不賦值
<script>
console.log(sname);
</script>

(5)不聲明,直接賦值,可以使用但是不提倡
<script> uname="zhai"; console.log(uname); </script>

3、let
<script> <!--let是塊級作用域,函數內部使用let定義后,對函數外部無影響--> let a = 1; console.log('函數執行前:' + a); function test(){ let a = 2; console.log('函數內改變變量的值為:' + a); } test(); console.log('調用函數后:' + a); </script>

在函數內部對變量值的改變,不會影響到函數的外部改變量的值。
ES5只有函數有塊級作用域的概念,ES6中的塊級作用域包括函數、for循環、if,塊及作用域。
4、ES6對字面量的增強寫法
(1)ES5的寫法
<script>
const student = {
name: "zhai",
age: 12,
eat: function () {
console.log("eat")
}
}
</script>
(2)ES6屬性
<script> const name="zhai"; const age=12; const student={ name, age } console.log(student) </script>
(3)ES6函數
<script>
const name = "zhai";
const age = 12;
const student = {
run() {
console.log("run")
},
eat() {
console.log("eat")
}
}
console.log(student.eat())
console.log(student.run())
</script>
