ES6 基本语法

时间:2021-02-07 03:48:27

ECMAScript 6 简介

ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

ECMA:国际标准组织

let 和 const 命令

ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

{
  let a = 10;
  var b = 1;
}

a // ReferenceError: a is not defined.
b // 1

上面代码在代码块之中,分别用letvar声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。

const声明一个只读的常量。一旦声明,常量的值就不能改变。

const PI = 3.1415;
PI // 3.1415

PI = 3;
// TypeError: Assignment to constant variable.

上面代码表明改变常量的值会报错。

本质

const实际上保证的,并不是变量的值不得改动,而是变量指向的那个内存地址不得改动。对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量。但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。因此,将一个对象声明为常量必须非常小心。

模板字符串

<script>
    var name = '小明', age = '83';

    // var str = name+"今年"+age+",下午我们去吃鸡";

    var str = `${name}今年${age},下午我们去吃鸡`;
    alert(str)

</script>

  

箭头函数

伪代码: function 函数名(){}  === var 函数名 = ()=>{}

<script>
     // es5 写法
	 function add1(x,y) {
			 	return x+y
			 }

			 alert(add1(1,2));
    // es6 箭头函数
     var add2 = (a,b)=>{

			 	return a+b
			 }

			 alert(add2(2,3));
</script>

字面量方式创建对象以及对象的单体模式

<script>
     var person = {
	 	name:'小明',
	 	age:18,
	 	fav:function() {
	 		// es5的函数中的this指向了当前对象
	 		alert(this.name)
	 	}
	 };

	 person.fav() // 小明
</script>

<script>
    var person2 = {
        name: '小明2',
        age: 18,
        fav: () => {
        // es6注意事项:箭头函数会改变this的指向 父级
        alert(this)
    }
    }

    person2.fav() // [object Window]
</script>

<script>
    //对象的单体模式
    // 使用对象的单体模式解决了this的指向问题

    var person = {
        name: '小明',
        age: 18,
        fav() {
            alert(this.name)
        }
    }

    person.fav() // 小明
</script>

es6中的面向对象

es6使用class 类方式创建

<script>
	class Cat{

		// constuctor 构造器  class方式创建 单体模式之间不要有逗号

		constructor(name,age){
			this.name = name;
			this.age = age

		}
		showName(){
			console.log(this.name)
		}
		showAge(){
			console.log(this.age)
		}

	}

	var c = new Cat('xiaohong',12)
	c.showName()
</script>

阮一峰的es6教程:http://es6.ruanyifeng.com/#docs/intro