// ES6 回顾:
// 1、模板字符串---------------------------------------------------------
/*
var name = "张三";
var age = 20;
console.log(name + "已经" + age + "岁了!"); //常规的拼接写法
console.log(`${name}已经${age}岁啦`);//ES6的模板字符串拼接写法
*/
// 2、属性简写和方法简写--------------------------------------------------
/*
var username = "李四";
var app = {
username: username, //以前的属性写法;
//以前的属性写法
run: function () {
console.log(this.username + "在跑步");
},
};
var app = {
username, //ES6属性简写,因为上面声明的变量名跟这里的变量名一直。就可以这样写
//ES6方法简写
run() {
console.log(`${this.username}在跑步!`); //输出:李四在跑步!
console.log(`${username}在跑步`); //输出:李四在跑步
console.log(this); //输出:{ username: '李四', run: [Function: run] }
console.log(this.username); //输出:李四
console.log(username); //输出:李四
console.log(username === this.username); //输出:true
},
};
console.log(username); //输出:李四
console.log(app.username); //输出:李四
console.log(`${app.username === username}:123`); //输出:true:123
console.log(app.username === username); //输出:true
app.run();
*/
// 3、箭头函数 this 指向上下文---------------------------------------------------------
// 以前的函数写法
/*
setTimeout(function () {
console.log("1s后执行"); //1s后执行
console.log(this); //Timeout对象
console.log(this._idleTimeout); //1000
}, 1000);
*/
// 箭头函数写法
/*
setTimeout(() => {
console.log("1s后执行"); //1s后执行
console.log(this); //{}
console.log(this._idleTimeout); //undefined
}, 1000);
*/
/*
function a() {
console.log(1);
console.log(this); //Object [global]
setTimeout(function () {
console.log(2);
}, 1000);
console.log(3);
}
a(); //输出顺序 1 、 Object [global] 、3 、 2
*/
/*
var b = () => {
console.log(this); //{}
setTimeout(() => {
console.log(this); //{}
}, 1000);
};
b();
*/
/*
var c = {
username: "王五",
birth: 1994,
c1: function (nowyear) {
// aaa 形参等于 nowyear形参
var c2 = (aaa) => `${this.username}今年:${aaa - this.birth}`;
// 和上面相同
// var c2 = (aaa) => {
// return `${this.username}今年:${aaa - this.birth}`;
// };
return c2(nowyear);
},
};
console.log(c.c1(2020)); //王五今年:26
*/
// 4、回调函数获取异步方法里面的数据--------------------------------------------------------
/*
function getDate() {
// 1
// ajax
//2
setTimeout(function () {
var name = "张三"; //4
return name;
}, 1000);
} //3第三步执行结束,未执行到name,无法获取name,则输出undefined
//外部获取异步方法里面的数据
console.log(getDate()); //undefined
*/
// -------------
/*
function getDate(callback) {
// ajax
setTimeout(function () {
var name = "张三";
callback(name);
return name;
}, 1000);
}
//外部获取异步方法里面的数据
getDate(function (date) {
console.log(date+"007");//张三0077
});
*/
// -------------
/*
function getDate(callback) {
// ajax
function callback(date) {
console.log(date + "007"); //张三0077
}
setTimeout(function () {
var name = "张三";
callback(name);
return name;
}, 1000);
}
//外部获取异步方法里面的数据
getDate();
*/
// ------------------------
/*
var b = function (date) {
console.log(date+"22");
};
function a(cba) {
// 1
setTimeout(function () {// 2
var name = "李四";//3
b(name);//4 输出 李四22
}, 100);
}//5结束
a();
*/
// ------------------
/*
// Promise 来处理异步
// resolve 表示成功的回调函数
// reject 表示失败的回调函数
var p = new Promise(function (resolve, reject) {
// ajax
setTimeout(function () {
var name = "张三";
// if (Math.random() < 0.8) {
// resolve(name + "abc"); //如果成功则执行
// } else {
// reject("失败");
// }
resolve(name + "abc"); //如果成功则执行
}, 100);
});
p.then(function (date) {
console.log(date + "666"); //张三abc666
});
**/
/*
function getDate(resolve, reject) {
setTimeout(function () {
var name = "张三";
resolve(name + "000");
}, 100);
}
var p = new Promise(getDate);
p.then(function (date) {
console.log(date + "999"); //张三000999
});
*/
// 5、声明方式--------------------------------------------------
/**
let a1 = "张三";
var c1 = "王五";
function b() {
let a2 = "李四";
let c2 = "李四";
console.log(a1); //张三
console.log(a2); //李四
console.log(c1); //王五
console.log(c2); //李四
}
b();
console.log(a1); //张三
console.log(a2); // a2 is not defined 未声明
console.log(c1); //王五
console.log(c2); // c2 is not defined
*/
/*
let a1 = 1;
var c1 = 3;
if (true) {
let a2 = 2;
var c2 = 4;
}
console.log(a1); // 1
console.log(a2); // a2 is not defined , let 是块作用域的变量声明,无法被外部访问
console.log(c1); // 3
console.log(c2); // 4
*/
/*
const PI = 3.14;
const PI = 34;
// var PI = 5;
console.log(PI); //'PI' has already been declared ,const 声明常量后,无法再次更改。
*/
//------------------------------------------------------------------------------------------