浙江铃声推荐联盟

再谈JavaScript

给产品经理讲技术2018-12-08 13:26:00

老朋友肯定知道去年有篇文章简单过了下JavaScript,今天咱们重新对JavaScript认识一下,说一些关于JavaScript上次没说的那些事儿。(新朋友或者已经遗忘的朋友请点此跳转老文章)

  • JavaScript的前生今世

JavaScript是一种脚本语言(参见《程序员别唬我系列之:脚本》),前端的开发同学对他再熟悉不过。它最早产生于网景公司,首次出街是应用在该公司的「网景导航者」浏览器上。虽然现在网景公司和它的浏览器已经难觅踪影,但牛逼的人或事总不会被历史忘记,正是应了那句「哥虽早已不在江湖,但江湖还流传着哥的传说」。

网景公司推出JavaScript不久,微软和另一家名为CEnvi的公司也分别推出了自家的「JavaScript」标准与网景公司争夺市场,一时间三足鼎立。直到98年ECMA-262的建立,JavaScript的标准才得以统一。如今,所有符合ECMA-262标准的脚本语言都被称作JavaScript,例如微软的JScript。

  • JavaScript的运行环境

老文章里说过,脚本的运行环境叫解释器,JavaScript也有自己的解释器,叫做JavaScript引擎。当前的浏览器都会内置JavaScript引擎以提供JavaScript执行能力。下表展示了当前流行的浏览器也其他应用程序及其对应的JavaScript引擎和支持的JavaScript版本(摘自「维基百科」)。


不同的JavaScript引擎的实现可能大相径庭,有的是java实现(例如Rhino),有的完全由C\C++实现(如V8、SpiderMonkey),有的JavaScript引擎像常规的脚本解释器一样执行脚本代码,有的JavaScript引擎却会在执行前将JavaScript代码先编译成机器码,然后直接执行机器码以提高效率,比如Google的V8引擎。

  • JavaScript的兼容性

专用API = 适配死你API

虽然早在97年JavaScript就有了统一的标准,后面又经过了多个版本的修正,但是在JavaScript在开发过程中还是或多或少会遇到各种各样的兼容性问题。这些兼容性问题产生的原因多是由于各个厂家的浏览器对JavaScript API的实现有差异导致 ,甚至同一个厂家的浏览器在不同的版本上,对JavaScript的支持也有差异,这就需要JavaScript开发者有大量的踩坑经验,不然,JavaScript代码上线后,面对它的将是一大波投诉。

比如拿获取当前年份这个API来举例,代码如下:

var year= new Date().getYear();

在IE6到IE8上获得的年份是2016,但在IE9、FireFox、Chrome等版本较新的浏览器上,获得的年份值是116(2016-1900)。艾玛,稍微处理不好就穿越了。

  • JavaScript能干啥

这个问题大家应该都能很轻易的答出来,JavaScript主要用在前端,增强网页的互动性、实现动态效果、异步数据获取等。下面我们来看一个JavaScript做的特效:



别问我是怎么做的,我也是在网上抄的。

JavaScript这么牛逼,只能在前端使用岂不是可惜了?那必须不能啊。2009年Ryan Dah就把JavaScript「搬」到了服务器端,用它开发了一套「轻量级的WEB服务器」,名为Node.js。然而,神奇的事情不止于此,前段时间比较火的React Native技术也是基于JavaScript的开源框架,FaceBook把它「搬」到了客户端,大有JavaScript一统天下的意思了。

今天啰啰嗦嗦扯了这么多,也希望能让大伙儿对JavaScript有了新的认识。如果后面的文章隔三差五的来一些JavaScript开发的入门教程(当然是免费的啦!),你会不会支持我呢?现在开始投票,支持请赞赏双数,不支持请赞赏单数:P

PS:还是那句话,如果你有什么技术上的困惑,可以在微信公众账号pm_teacher留言骚扰我,就当你多了一个搞技术的朋友(有点小牛B哦!)。