JS的发展历程

JavaScript014

JS的发展历程,第1张

JavaScript是一种属于网络的高级脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。

JavaScript作为赋予网页生命的前端基础技术,它可以实现相应的效果和交互,是前端开发不可或缺的基本配置之一,今天来就来了解一下JavaScript的前世今生。具体内容包括JavaScript的诞生、语言版本的更迭以及应用领域等等。让大家在入门开始学习JavaScript之前,对JavaScript的发展历史有一个大致的了解。

1、JavaScript的诞生

JavaScript诞生于1995年,当时,它的主要目的是处理以前由服务器端需要负责的一些没有输入验证操作。在JavaScript问世之前,必须把表单数据发送到服务器端才能确定用户是否没有填写某个必填域,是否输入了无效的值。Netscape Navigator希望通过JavaScript来解决这个问题。在人们普遍使用电话拨号上网的时代,能够在客户端完成一些基本的验证任务绝对是令人兴奋的。毕竟,拨号上网速度之慢,导致了与服务器的每一次数据交换事实上都成了对人们耐心的一次考验。由此诞生了JavaScript!

JavaScript在1995年2月一经发布就获得了巨大的成功,Netscape随后在Netscape Navigator 3(网景浏览器)中发布了JavaScript 1.1版本。JavaScript发展至今不断迭代,已经取得了伟大成就;但是JavaScript是由公司开发而成的,不便于其他公司拓展和使用,同时JavaScript开发者也在丰富自己的代码和选择使用框架方式,让JavaScript运行在标准兼容的、无障碍的网页中。

2、JavaScript的定义

JavaScript是一种在网络浏览器上运行的编程语言,这种编程语言我们称之为脚本。而脚本语言是在浏览器执行的语言,是一段程序,不是软件。脚本语言可以添加到使用HTML和CSS构建的网站中,在页面加载时会自动执行,并在实现各种页面动态效果、交互方面发挥重要的作用;例如,在购物网站购物时,购物车的使用和成本估算就需要JavaScript,如果没有JavaScript就无法完成结算,购物车的各项操作将无法实现。

3、JavaScript语言版本更迭

为了让JavaScript能够运行在标准兼容的、无障碍的网页中,也就是需要解决JavaScript的兼容问题;因此,欧洲计算机制造商协会ECMA牵头制定JavaScript标准,取名为ECMAScript,至此,JavaScript 的核心语言ECMAScript产生。ECMAScript 是一门由 ECMA TC39 委员会标准化的编程语言,其规定了JavaScript的编程语法和基础核心知识,是所有浏览器厂商共同遵守的一套JavaScript语法工业标准。其在1997年正式发布第一版,历经十数年的迭代更新,于2018年发布了ECMAScript 8,其功能空前强大,增加了更加丰富的新特性。JavaScript语言版本更迭的发展历史如下

4、JavaScript的应用领域

经过多年发展,JavaScript成为现代技术世界中最受欢迎和增长最快的编程语言之一,同时成为前端开发人员的最爱。那么,为什么JavaScript能够有如此高的热度呢?因为JavaScript有着丰富的用途,几乎所有浏览器都支持它,是互联网上最流行的脚本语言。只要是稍微对前端感兴趣,你肯定听说过“大前端”,“全端”,JavaScript 完全符合这一趋势,JavaScript可以写前端、后端、客户端,甚至可以写各式应用以及操作系统!下面这张图表示JavaScript的实际使用功能与领域:

回顾JavaScript的发展历史,JavaScript可运行在所有主要平台的所有主流浏览器上,也可运行在每一个主流操作系统的服务器端,足以证明JavaScript无处不在的魅力。

按照js同步执行的顺序,函数调用会首先执行for循环,循环5次开启了5个延迟器,延时器内部的回调函数将会异步执行,会在延时1s后进入消息队列等待执行。循环了5次,所以此时i的值为5,然后同步执行console.log打印5,第一次同步执行结束,然后开始执行消息队列的异步任务,打印5个5,中间的undefined是函数调用无返回值返回的。

执行顺序和第一题相同,不同的是延时器被包裹在了一个立即执行函数内容,并把每一次循环的i作为参数传入,此时循环内部的函数形成了一个私有作用域,每一次的i变量被独立保存了起来,因此每一次循环的i的值都会被打印出来。

延时器内部回调函数是异步函数,将在延时结束后,进入消息队列等待执行,因此同步的console.log("CCCC")最优先执行,然后延时0ms的延时器的回调先进入消息队列,1000ms后第一个延时器的回调再进入消息队列等待执行,因此先执行0ms的回调打印DDDD,再执行1000ms的回调打印BBBB。

这里与上一题不同的是中间多了一个执行3s的同步while循环,因此执行顺序是这样的:

第一个延时器延时1s后内部异步回调函数进入消息队列等待执行,

等待while循环3s后打印"CCCC",

循环结束后第一个延时器内部的回调已经进入消息队列第一个执行位置等待执行。

第二个延时器延时0s后内部异步回调函数进入消息队列等待执行,延时结束后排到第一个延时器的回调函数后面,

因此异步队里内部先打印"BBBB",再打印"DDDD"