怀英漫谈2-JS语法初涉

今天碰了一下JS的语法,想与你聊聊这个。这篇文章适合前端设计师,不过在文末,我也为你准备了一些感悟,有兴趣的不妨跳到最后一看。

总体来看,JS的语法和Java的比较像,三类十一符句,三大类是:操作、判断、循环。操作分为:算术、关系、逻辑、条件、逗号运算符。判断分为:if、switch语句。循环分为:while、do-while、for、for/in语句。共十一符句。

在看完三类十一符句之后,除了算数运算符的“前++”、“后++”,比较运算符的“全等===”,for/in语句,刷新了一波认知之外,其它的都可以套用Java中的那一套。

前++, 后++

所谓的“前++”,也就是值本身+1, 返回的是新值。“后++”,也是值本身+1, 但返回的是旧值。这与我之前的认知并不同。我之前认为“前++”是先加1,然后再做算数运算。“后++”是先做算数运算,然后再加1。细细体会这两种解释,其实意思都一样,不过呢,前者不光光说了值的状态(值本身),也说了运算状态(返回的是……)。而后者将这两种状态杂糅到了一起。在做具体分析时候需要将这两种状态分离开来,然后再进行判断,这样一来效率反而较第一种降低了不少。

全等===

这个符号我是第一次见,在Java的开发中并未见过。在JS中,它代表着全等,不光光要求数值相等,数据类型要完全相等。这个功能有点儿像Java中的instanceof与==的结合。

for/in

for/in我以前是知道这个名字的,不过在我的印象中,我把它与Java中的增强for循环联系到了一块,都是在for的括号里做文章,不再传统的(var i=0; i<?; i++)这样子了,而是可以将集合中的每一个元素提取出来,供每一次的循环使用。并且不需要在使用的时候再去考虑循环次数这样的东西。从这个角度来说,它对集合遍历对象的效率要高于传统for循环。

感悟

JS真的是集成了顶级语言的语法,因为几年前学C的时候,发现C的语法也基本上是三类十一符句。这应该不是巧合,而是编程领域形成的共识。三类十一符句是最经典的编程语法,它会逐渐变成这一领域的基础设施,对我来说,精通其中一门语言的三类十一符句后,再去学别的语法,速度上会很快。对新的编程语言来说,这必将是以后新出的编程语言语法的一部分。

清单

  1. JS语法与Java类似,都是三类十一符句。
  2. JS中 特有“全等===”
  3. JS中的for/in,概念上与Java中的foreach相同。

原文发布于微信公众号 - 怀英的自我修炼(hydzwxl)

原文发表时间:2018-01-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HansBug's Lab

1741: [Usaco2005 nov]Asteroids 穿越小行星群

1741: [Usaco2005 nov]Asteroids 穿越小行星群 Time Limit: 5 Sec  Memory Limit: 64 MB Sub...

2456
来自专栏HansBug's Lab

1734: [Usaco2005 feb]Aggressive cows 愤怒的牛

1734: [Usaco2005 feb]Aggressive cows 愤怒的牛 Time Limit: 5 Sec  Memory Limit: 64 MB...

2437
来自专栏HansBug's Lab

1634: [Usaco2007 Jan]Protecting the Flowers 护花

1634: [Usaco2007 Jan]Protecting the Flowers 护花 Time Limit: 5 Sec  Memory Limit:...

3148
来自专栏HansBug's Lab

3433: [Usaco2014 Jan]Recording the Moolympics

3433: [Usaco2014 Jan]Recording the Moolympics Time Limit: 10 Sec  Memory Limit:...

2504
来自专栏HansBug's Lab

1671: [Usaco2005 Dec]Knights of Ni 骑士

1671: [Usaco2005 Dec]Knights of Ni 骑士 Time Limit: 5 Sec  Memory Limit: 64 MB Su...

2455
来自专栏fangyangcoder

python机器学习实战(一)

这篇notebook是关于机器学习中监督学习的k近邻算法,将介绍2个实例,分别是使用k-近邻算法改进约会网站的效果和手写识别系统. 操作系统:ubuntu14....

802
来自专栏数据结构与算法

BZOJ1007: [HNOI2008]水平可见直线(单调栈)

1061
来自专栏HansBug's Lab

2272: [Usaco2011 Feb]Cowlphabet 奶牛文字

2272: [Usaco2011 Feb]Cowlphabet 奶牛文字 Time Limit: 10 Sec  Memory Limit: 128 MB S...

2456
来自专栏HansBug's Lab

1711: [Usaco2007 Open]Dingin吃饭

1711: [Usaco2007 Open]Dingin吃饭 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 56...

3298
来自专栏小樱的经验随笔

BZOJ 1046: [HAOI2007]上升序列【贪心+二分状态+dp+递归】

1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 4987  Solv...

2615

扫描关注云+社区