ES6

1.ES6

1.1let

let 声明的是一个块状作用域,定义,只在对应的{}内生效
    if(true) {
        var a = 20;
        let b = 10;
    }
    console.log(a); // 20
    console.log(b); //Uncaught ReferenceError: b is not defined
    
let 不能定义两次相同的名字
		let b = 10;
        let b = 30;
        console.log(b);  //Uncaught SyntaxError: Identifier 'b' has already been declared

1.2const

定义常量,只能定义,不可更改
	const c = 'hello';
    console.log(c); //hello
    c = 'world';
    console.log(c); //Uncaught TypeError: Assignment to constant variable.
    
使用const定义一个对象常量,可以更改赋值
    const person = {
        uname:'zhangsan'
    }
    person.uname = 'lisi';
    person.age = 20
    console.log(person);  //{uname: "lisi",age:20}
// const 定义的是一个对象,对象是存储在内存上的,所以可以更改

1.3箭头函数

// 下面三个函数是一致的
var fun = function(a,b){return a+b;}
var fun = (a,b)=>a+b;
var fun = (a,b)=>{return a+b};

// 调用函数
fun(3,9);



// 箭头函数
	let f = () => {
		console.log('这是一个函数...');
	}
	
this的指向问题:this绑定箭头函数声明时的上下文环境一旦绑定,不会再变化
        created:function(){
            console.log('vue已经实例化');
            // 存储vue对象
            let _this = this;
            // 进行数据模拟请求
            setTimeout(function () {
                // 此处this指向的是window对象
                console.log('this'+this);
                console.log('_this'+_this);
                _this.news=[
                    '新闻1',
                    '新闻2'
                ];
            },1000)
        }

1.4 反引号``

`
<div>
    <h3>我是h3</h3>
    <h4>我是h4</h4>
</div>
 `
 
 用``反引号里面包裹的内容可以解析换行符,如果用单引号双引号,引号里面的内容,换行是不生效的,程序会报错

1.5暂时性死区

暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。
function bar(x = y, y = 2) {
  return [x, y];
}

bar(); // 报错


// 不报错
var x = x;

// 报错
let x = x;
// ReferenceError: x is not defined

1.6Object.assign()

// Object.assign() 将多个对象的属性和值组合到一个对象中,同名属性的值发生覆盖,不同名属性发生继承
posted @ 2018-03-09 20:45  清风白水  阅读(164)  评论(0编辑  收藏  举报