这是我第1篇简书。
语法糖(Syntactic sugar),指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
之所以叫语法糖,不只是因为加糖后的代码功能与加糖前保持一致,更重要的是,糖在不改变其所在位置的语法结构的前提下,实现了运行时等价。可以简单理解为,加糖后的代码编译后跟加糖前一模一样。所以需要好好掌握 ES6 。
这里我举三个重要的例子:
1.最基本的,for循环就是一个语法糖:
for (var i = 0; i < 5; i++){
...
}
而这个实际上跟while没啥区别:
var i=0;
while (i < 5){
...
i++;
}
2.js的map()方法
input.map(item => item + 1);
(map的作用就是“映射”,原数组被“映射”成对应新数组)
意思是:input.map(function (item) {
return item + 1;
});
3.vue中,在某些场景中,我们可能需要对一个 prop 进行「双向绑定」,原先删除掉.sync 修饰符(因为这种双向绑定的机制,破坏了单向数据流(one-way data flow)的设计),后又引入.sync 修饰符(做出了改进,将子组件影响父组件状态的代码,能够和单向数据流保持一致,以及变得更加清晰明确。),但是这次只是原有语法的语法糖包装而成,其背后实现原理是,在组件上自动扩充一个额外的 v-on监听器:
<comp v-bind:foo.sync="bar"></comp>
会被扩充为:
<comp :foo="bar" @update:foo="val => bar=val"></comp>
对于子组件,如果想要更新 foo 的值,则需要显式地触发一个事件,而不是直接修改 prop:
this.$emit('update:foo', newValue)
简单说,语法糖就是为了避免coder出现错误并提高效率的语法层面的一种优雅的解决方案。就是一种便捷写法,让我们的写的代码更简单,看起来也更容易理解。