专业的解释

在计算机科学中,语法糖(syntactic sugar)是指编程语言中可以更容易的表达一个操作的语法,它可以使程序员更加容易去使用这门语言:操作可以变得更加清晰、方便,或者更加符合程序员的编程习惯。

例如,很多编程语言都提供了引用和更新数组的语法;从本质上讲,数组元素的访问即使如下过程:提供一个数组和下标向量,然后调用函数get_array(Array, vector(i, j))。取而代之的是,很多编程语言都提供了如下语法访问数组元素Array[i, j]。同理,更新数组元素可以表达为set_array(Array, vetor(i, j), value),但是很多编程语言都提供如下语法更新数组元素Array[i, j] := value。

具体来说,语法糖是指语言中的一个构件,当去掉该构件后并不影响语言的功能和表达能力。例如,C语言中的标记a[i]就是*(a+i)的语法糖。

通俗的解释

加了糖就变甜了,但是性质并没有变,即加糖前和加糖后代码功能是一样的。

加糖后更好吃,代码更流畅,理解更自然

写得爽,看着爽,就像吃了糖。效率高,错误少,老公回家早…

简单的说,语法糖就是一种便捷写法。

我们可以把语法糖理解成汉语中的成语,有时候表达一个意思的时候,你用一个成语来解释,是不是清晰明了多了呢?

JavaScript的语法糖

主要是ES6添加的很多语法糖

1.箭头函数

ES6 提供了一种写匿名函数的新方法,即箭头函数。箭头函数不需要使用function关键字,其参数和函数体之间以=>相连接:

//原始
let fun = function(params){}//可以缩写成如下 箭头函数会改变this的指向
let fun = params =>{}//当参数有两个及以上时,如下:
let fun = (params1,params2,,,)=>{}

箭头函数看起来类似于传统的匿名函数,他们却具有根本性的不同:

  1. 箭头函数不能被直接命名,不过允许它们赋值给一个变量;
  2. 箭头函数不能用做构造函数,你不能对箭头函数使用new关键字;
  3. 箭头函数也没有prototype属性;
  4. 箭头函数绑定了词法作用域,不会修改this的指向。

最后一点是箭头函数最大的特点

2.对象字面量

对象字面量是指以{}形式直接表示的对象
如:

var game = {name: 'League of legends',year: '2010',company: 'Riot Company'
}

一个例子

用ES5:

var listeners = []
function listen() {}
var events = {listeners: listeners,listen: listen
}

ES6则允许我们简写成下面这种形式:

var listeners = []
function listen() {}
var events = { listeners, listen }

使用对象字面量的简洁写法让我们在不影响语义的情况下减少了重复代码。

这是ES6带来的好处之一,它提供了众多更简洁,语义更清晰的语法,让我们的代码的可读性,可维护性大大提升。

3.对象解构

为了更好的描述对象解构如何使用,我们先构建下面这样一个对象

// 描述Bruce Wayne的对象
var character = {name: 'Bruce',pseudonym: 'Batman',metadata: {age: 34,gender: 'male'},batarang: ['gas pellet', 'bat-mobile control', 'bat-cuffs']
}

假如现有有一个名为 pseudonym 的变量,我们想让其变量值指向character.pseudonym,使用ES5,你往往会按下面这样做:

var pseudonym = character.pseudonym

ES6致力于让我们的代码更简洁,通过ES6我们可以用下面的代码实现一样的功能:

var { pseudonym } = character

4.数组解构

数组解构的语法和对象解构是类似的。区别在于,数组解构我们使用中括号而非花括号,下面的代码中,通过结构,我们在数组coordinates中提出了变量 x,y 。 你不需要使用x = coordinates[0]这样的语法了,数组解构不使用索引值,但却让你的代码更加清晰。

var coordinates = [12, -7]
var [x, y] = coordinates
console.log(x)
// <- 12

JavaScript中的 语法糖 是什么?相关推荐

  1. 浅析java中的语法糖

    概述 编译器是一种计算机程序, 它主要的目的是将便于人编写.阅读.维护的高级计算机语言所写的源代码程序, 翻译为计算机能解读.运行的低阶机器语言的程序, 即可执行文件.而 javac 就是java语言 ...

  2. Java 中的语法糖 (Syntactic Sugar)

    语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语.指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便 ...

  3. Java 中的语法糖,真甜。

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 我们在日常开发中经常会使用到诸如泛型.自动拆箱和装箱.内部 ...

  4. 看看C# 6.0中那些语法糖都干了些什么(终结篇)

    终于写到终结篇了,整个人像在梦游一样,说完这一篇我得继续写我的js系列啦. 一:带索引的对象初始化器 还是按照江湖老规矩,先扒开看看到底是个什么玩意. 1 static void Main(strin ...

  5. 看看C# 6.0中那些语法糖都干了些什么(上篇)

    一:自己主动初始化属性 确实这个比之前的版本号简化了一下.只是你肯定非常好奇.究竟编译器给我们做了哪些东西呢? 1 class Student 2 { 3 public string Name { g ...

  6. Java中的语法糖及反编译工具

    雪压枝头低,虽低不着泥 壹·Java中的反编译工具 贰·常见的12"颗"语法糖 switch forEach lambda if条件编译 变长参数 enum assert断言 tr ...

  7. javascript中es6语法

    es6语法简介: // 1.历史:// 1995-----JavaScript诞生// 1997-----ECMAScript标准确立// 1999-----ES3出现,与此同时IE5风靡一时// 2 ...

  8. ef 在此上下文中只支持基本类型或枚举类型_Java 中的 6 颗语法糖

    作者:Java 技术栈来源:SegmentFault 思否社区 原文作者:danchu原文链接:https://blog.csdn.net/danchu/article/details/5498644 ...

  9. Java中的10颗语法糖

    语法糖(Syntactic Sugar):也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用.通常来说,使用语法糖能够增加程序的可读性,减少程序代码出错的 ...

最新文章

  1. SpringBoot集成Swagger-Bootstrap-UI,页面更清爽!
  2. 安全框架 - Shiro与springMVC整合的注解以及JSP标签
  3. FTP软件VSFTP配置文件详解
  4. Python 面向对象【1】
  5. 国外机器人产业发展经验
  6. 模块/包 与Common.js
  7. [转贴]壮观啊!实拍中国最美公路
  8. 计算机教室电脑无法启动,电子教室教师端不能启动没开机的学生机的解决办法...
  9. mplay readme
  10. 解答篇:金蝶K3wise总账凭证页面查询不到科目分录核算项目
  11. 微信小程序-001-抽签功能-000-目录概要
  12. Android Studio 解决数据库手机电脑不同步
  13. Laravel 博客开发|网站打开速度优化
  14. ubuntu18.04桌面美化
  15. Friday BI Fly | 2016年12月02日晚8点半微信直播交流 地理大数据如何驱动智慧选址第42场...
  16. STC8通过SPI读写W25Q128
  17. 三大统计平台流量对比,百度偏高,51la与CNZZ持平
  18. CENTOS7 安装eclipse应用
  19. 25个细致微妙的扁平化2.0风格网页设计
  20. 问渠哪得清如许?为有源头活水来。——AI与传统文化会碰撞出何种火花呢?

热门文章

  1. python电影推荐系统 管理系统 django框架 MySQL数据库 源码下载 计算机毕业设计
  2. 网购代下单 省钱新主张
  3. ipvs之ipvs0网卡
  4. netbeans设置默认编码和菜单字体大小的方法。。
  5. MapReduce编程:单词计数--《大数据基础教程》
  6. 264 怎么在Win10中重新启动WSL(Windows子系统Linux)
  7. 一句话说清OpenShift的核心价值
  8. Tomcat启动不了,或打开startup.bat一闪而过
  9. tomcat——8080、80、8443和443端口比较
  10. js 定义布尔变量不能写成 boolean flag;