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() 将多个对象的属性和值组合到一个对象中,同名属性的值发生覆盖,不同名属性发生继承