Vue Es6語法
阿新 • • 發佈:2022-03-03
let和var
- var是Js的一個設計缺陷,於是增加了一個新的關鍵字let。
- var沒有塊級作用域
塊級作用域
{var name = '張三' console.log(name) } console.log(name) //如果用var,這裡也能用name
- 沒有塊級作用域容易引起問題:if的塊級作用域
var func if(true){ var name = '張三' func = function(){ console.log(name) } } func() //沒有塊級作用域,name在任何地方都能被改掉
- 沒有塊級作用域引起的問題:for的塊級作用域
如果定義5個button,想實現點選第一個按鈕,顯示第1個按鈕被點選。
點選5個按鈕的程式碼
var btns = document.getElementsByTagName('button')
for(var i=0;i<btns.length;i++){
btns[i].addEventListener('click',function(){
console.log('第' + i + '個按鈕被點選')
}
}
- 實際執行時,點選第1個按鈕,顯示第5個按鈕被點選,沒有達到預期效果。
- 因為addEventListener使用的外部的var定義的i,for執行後,i已經變成了5
- 想解決,必須使用閉包函式,因為函式是一個作用域
- 在Es6之前,Js中if和for是沒有作用域的,所以必須藉助匿名function作用域
ES6有if和for塊級作用域
- 使用Es6,只需把前面程式碼中的var改成let即可,for就有了塊級作用域
const的使用
- 當我們修飾的識別符號不被再次賦值時,優先使用const來保證資料的安全
- ES6開發中,優先使用const,只有需要改變某個識別符號時才使用let
const的注意事項
- ①
const a = 1; a = 2 //再次賦值會出錯
- ②在使用const定義識別符號時,必須進行賦值
const name //會出錯
- ③常量的含義是指向的物件不能改變,但可以改變該物件內部的屬性
const obj = { name:'關羽', age:36, height:1.82 } obj.name = '張飛' //可以更改物件的屬性 obj.age = 35 //可以更改物件的屬性
比如,const app = new Vue({})之後,可以通過app.屬性值對app的屬性進行更改
物件字面量的增強寫法
const obj = new Object() //也可寫成const obj = {},即字面量
屬性的增強寫法
Es5的寫法
const name = '關羽'
const age = 36
const height = 1.86
const obj = {
name:name,
age:age,
height:height
}
console.log(obj)
//
Es6的寫法
const name = '關羽'
const age = 36
const height = 1.86
const obj = {
name,
age,
height
}
函式的增強寫法
Es5的函式
const obj = {
run:function(){
},
eat:function(){}
}
Es6函式
const obj = {
run(){}
}