1. 程式人生 > 其它 >Vue Es6語法

Vue Es6語法

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(){}
}