今天碰了一下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的语法也基本上是三类十一符句。这应该不是巧合,而是编程领域形成的共识。三类十一符句是最经典的编程语法,它会逐渐变成这一领域的基础设施,对我来说,精通其中一门语言的三类十一符句后,再去学别的语法,速度上会很快。对新的编程语言来说,这必将是以后新出的编程语言语法的一部分。
清单