ES6 回顾【01】

// 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 声明常量后,无法再次更改。
  */

  //------------------------------------------------------------------------------------------


  

 

posted @ 2021-01-20 13:27  半遮  阅读(54)  评论(0编辑  收藏  举报