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>