es6

let 命令

1.块内有效,块外声明的变量调用报错,var则返回正常值

2.for循环中适用,for外报错

3.let在for中相当于父作用域

    for (let i = 0; i < 3; i++)

  {let i = 'abc';

  console.log(i); }

// abc // abc // abc

4.不存在变量提升

     var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined。这种现象多多少少是有些奇怪的,按照一般的逻辑,变量应该在声明语句之后才可以使用。

为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错

const命令

      const声明的只是一个只读常量,一旦声明则值不变;

  const声明变量就必须立即初始化,不能以后再再赋值,否则报错;

        与let一样,变量不提升,不能重复声明,只在块内作用域有效;

箭头函数

  f=u=>v 等价于 var f = function(v)

        { return v; };

尾调用:function f(x){

     return g(x);

     }

try...catch

传统的写法是catch语句必须带有参数,用来接收try代码块抛出的错误。

!!!!!!set和Map很重要

set:。它类似于数组,但是成员的值都是唯一的,没有重复的值。

const s = new Set();

[2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x));

for (let i of s) {
  console.log(i);
}
// 2 3 5 4

Set 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。

 map是键值对的集合

promise对象

 Promise 是异步编程的一种解决方案

简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果

Promise对象有以下两个特点。

(1)对象的状态不受外界影响,只有结果会改变状态:pending(进行中)、fulfilled(已成功)和rejected(已失败);

var promise = new Promise(function(resolve, reject) {
  // ... some code

  if (/* 异步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});

Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。

promise.then(function(value) {
  // success
}, function(error) {
  // failure
})
promise 与ajax
new XMLHttpRequest();对象用于在后台与服务器交换数据

XMLHttpRequest.open()

初始化 HTTP 请求参数

(method, url, async, username, password)

 method 参数是用于请求的 HTTP 方法。值包括 GET、POST 和 HEAD。

POST:用"POST"方式发送数据,可以大到4MB
GET:用"GET"方式发送数据,只能256KB

XMLHttpRequest.send()

发送一个 HTTP 请求


var getJSON = function(url) { 
  var promise = new Promise(function(resolve, reject){
    var client = new XMLHttpRequest();
    client.open("GET", url);
    client.onreadystatechange = handler;
    client.responseType = "json";
    client.setRequestHeader("Accept", "application/json");
    client.send();

    function handler() {
      if (this.readyState !== 4) {
        return;
      }
      if (this.status === 200) {
        resolve(this.response);
      } else {
        reject(new Error(this.statusText));
      }
    };
  });

  return promise;
};

getJSON("/posts.json").then(function(json) {
  console.log('Contents: ' + json);
}, function(error) {
  console.error('出错了', error);
});



 

posted @ 2017-10-22 14:06  趁清风正好  阅读(206)  评论(0编辑  收藏  举报