关于JavaScript语法问题

  let { query, pathname } = url.parse(req.url, true);这样的语法应该怎么理解??

url.parse 返回的是一个对象,这个对象里含有querey, pathname属性,原来你应该这么写:

let ret = url.parse(req.url,true)

let query = ret.query;

let pathname = ret.pathname;

 

ES6提供了对象解构赋值语法,支持直接从对象结构出含有的属性,语法是:

let {var1, var2} = {var1:…, var2:…}

 

因此,上面的代码简化为

let { query, pathname } = url.parse(req.url, true);

 

当然,如果url.parse返回了null/undefined,上述代码会报错,所以使用解构赋值前最好判断下是否为null

let ret = url.parse(req.url, true);

if(ret==null){
  return;
}

let {query, pathname} = ret;