Vue 是基于最新版本的 JavaScript ECMAScript 6 开发的,很多语法遵循的都是 ES 6 中 新出现的语法。因此,在学习 Vue 之前,有必要先补充一点 ES 6 的简单语法。
这里的语法不是很全面,但都是 Vue 中常会用到的。
ES 6 的变量声明语法
在 ES 5 版本的 JS 中,变量是通过关键字 var 声明的:
1 | var a = 'xx'; |
但是这种声明变量的方式极混乱。变量 a 全局都可以调用,且存在变量提升的情况,而且可以重复声明。
为了避免这些混乱的问题,ES 6 版本的 JS 引入了两个新的声明变量的方式,let 和 const:
1 | let a = 'ss'; |
使用 let 声明变量的特点为:
- a是局部作用域的
- 不存在变量提升
- 不能重复声明(var 可以重复声明)
使用 const 声明的特点为:
- 局部作用域
- 不存在变量提升
- 不能重复声明
- 一般声明不可变的量
模板字符串
类似于 Python 中的 f-strings ,JS 也有类似的字符串格式化方式,称为模板字符串。其用法为:使用 tab 键上面的反引号包裹,通过 ${变量名}
的形式来插入值,例如:
1 | let bb = 'jj'; |
ES 5 和 ES 6 的函数对比
ES 5 中,普通函数的写法为:
1 | function func(x){ |
匿名函数的写法为:
1 | var func = function(x){ |
ES 6 中的匿名函数也可以这样写,不过建议使用 let 声明变量:
1 | let func = function(x){ |
ES 6 中的匿名函数可以简写成箭头函数的形式:
1 | let func = (x) => { |
箭头函数与普通的匿名函数还是有些区别,主要是 this 的指向问题,在稍后的 ES 6 的类中会有所提及。
上面的箭头函数可以进一步省略括号简写成:
1 | let func = x => x; |
写法很简单,但是牺牲了可读性。
而且如果有多个参数的时候必须加括号,函数返回值还是只能有一个,没有参数的,必须写一个()
:
1 | let add = (x, y) => x + y; |
自定义对象中属性的简写
若自定义对象中的值与键的变量名相同,可以把冒号和值省略,只写键,例如:
1 | let hello = 'Hello World!' |
自定义对象中封装函数的写法
ES 5 自定义对象中封装函数的写法:
1 | var person1 = { |
ES 6 中自定义对象中来封装箭头函数的写法,这里面会涉及到箭头函数中的 this 指向问题:
1 | let person2 = { |
这种让 this 指向上下文的情况虽然不多见,但是在 Vue 的学习中还是会遇到的,在实际应用时要灵活使用。
当然,更多的时候,我们还是希望 this 指向 person 对象,而不是 Window 对象,所以 ES 6 还有下面这种对象的单体模式写法,简化了自定义对象中封装函数的语法:
1 | let person3 = { |
ES 5 和 ES 6 的类写法对比(了解)
ES 5 写类的方式:
1 | function Person(name, age){ // 函数名大写作为类 |
ES 5 的类是可以继承的,继承之后,可以通过子类实例化的对象调用父类的方法。仅作了解,日后可深入研究。
ES 6 的类则这样写:
1 | class Person2{ |
ES 6 的类当然也是可以继承的,这里咱们就不讨论了。将来需要的时候,就去学一下吧。大约是用的 extends 和 super。