实现查询字符串参数—(ES5与ES6两种语法对比)

#题记
这几天,接到阿里的电话面试,其中问了一些简单的问题,也问了一些需要思考的问题,现在想把这个问题详细的记录一下!
#正文
众所周知,JavaScript已经是互联开发的第一大语言,而且正在变成一种全领域的语言。
随之,ECMAScript正式JavaSript的国际标准,这就决定了该标准的重要性!
下面我想从一道简单的问题,来引申出ES6的解构赋值问题!
##题目

/*
请构造一个函数
输入:'https://www.baidu.com/s?wd=vue的&ha=xx'
输出:
{
	wd:vue,
	ha:xx	
}
*/

一个很简单的查询字符串的参数,我们看看利用ES5的语法来怎么实现:
###ES5:

function getQuery(url){
	// 首先根据?来分割字符串,获取到参数字符串
	var str = url.solit("?")[1];
	// 创建保存数据的对象
	var args = {};
	// 根据参数字符串来分割,把字符串分割为wd=vue 与 ha=xx
	var items = str.length ? str.split("&") : [];
	for(var i=0;i

那么我们利用ES6的语法又能节省多少代码呢?
###ES6
首先我们先思考几个问题,在这个函数中有什么可以优化的地方

  • 首先,可以运用到形参的扩展,给参数一个默认值
  • 其次,可以使用解构赋值,避免声明多个变量
  • 其次使用箭头函数,简化语法
    function getQuery(url = ""){
   		const [, pStr = ""] = url.split('?'); // 使用解构赋值,避免了使用数组
   		const args = {};
   		pStr.split('&').map((it, i)=>{  // 箭头函数搭配map,避免了for循环,可以少定义变量
   			const [k,v] = it.split('='); // 不用定义k,v并分开赋值,直接赋值 简化代码
   			args[k]=v;
   		});
   		return args;
   	}

你可能感兴趣的:(ES6,JavaScript)