//说实话 es6说起来很厉害 其实感觉也还行 但是不用还是不行的 要用用才可以更加理解 所以花几天时间来学习学习
// let和var差不多 不过let只在代码块内有效
{
var a=1;
let b=2;
}
console.log(a); //1
console.log(b); //defined
//let 是先申明后使用 var先使用后申明
{
console.log(e); //undefined
console.log(c); //c is not defined
var e=2;
let c=3;
}
//暂时性死区
var tmp=123;
if(true){
tmp="abc";
let tmp; //tmpis not defined
}
//不能重复命名
let a=10;
undefined
console.log(a);
undefined
let a=100;
VM2621:1 Uncaught SyntaxError: Identifier 'a' has already been declared
at <anonymous>:1:1
const 声明常量,一旦声明就不可改变
const a=1;
a=2;
console.log(a); // Assignment to constant variable.
//const也是块级作用域
{
const b=1;
}
console.log(b); //b is not defined
//const 保证了变量指向地址不变 不能保证该地址的数据不变
const a={};
a.name="1";
console.log(a.name); //1
const b=[];
b.push("2");
console.log(b); //2
//如果希望它冻结
const a=Object.freeze({});
a.name="zzw";
console.log(a.name); //undefined
//箭头函数基本用法
var a=function(){console.log('hello')}
var b=()=>console.log("es6Hello")
a(); //hellow
b(); //es6Hello
//使用多个参数时用逗号隔开
var c=(a,b)=>a+b
console.log(c(3,9)); //12
// 使用多条语句要用到大括号
var d=(a,b)=> {
if(a>3){
let a=1;
return a+b;
}
}
console.log(d(4,9)); //10
//this指向此作用域 而不是其他
const e = {
name:"runoob",
say:function(){
console.log(this.name);
}
}
e.say(); //nunoob
const f= {
Aname:"hero",
say: () => {
console.log(this.Aname);
}
}
f.say(); //undefined