如何用通俗易懂的语言解释脚本(script)是什么?

在学习网站前端知识,对于脚本没有很清楚的概念。它是什么?用来干什么?为什么用它?
关注者
977
被浏览
660,003
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

感谢邀请。在计算机领域里,“脚本”是个非常含糊的概念,在不同上下文下可以有非常不一样的定义。这个问题的上下文是“前端开发”,因此我就仅仅针对前端开发里涉及到的“脚本”来回答这个问题。

它是什么?

如果没有特殊说明的话,前端开发里说的脚本特指 JavaScript。虽然 IE 还支持用 VBScript 写前端脚本,Chrome 即将原生支持 Dart 做前端脚本,Flash 里的 Action Script 某种意义上也可以被看作是“前端开发所使用的脚本”,但如果你想要讨论那些“脚本”的话,都需要加以特殊说明。由于提问者没有给出任何限定,因此我假设提问者提问的仅仅是 JavaScript。

因此,这个问题等价于问“JavaScript 是什么”,而这个等价问题可以在维基百科上找到非常全面的回答:

zh.wikipedia.org/wiki/J

en.wikipedia.org/wiki/J

简单地说,JavaScript 就是一段可以运行的代码,或者嵌入在 HTML 中,或者作为单独的文件被 HTML 引用,用以实现某种动态的功能。

用来干什么?

既然 JavaScript 是一段可以运行的代码,那么它在运行的时候,就能实现一些编写者期望的功能。

首先,也是最重要的一点,就是 JavaScript 能够动态改变网页的内容。在 JavaScript 发明出来之前,一张网页显示出来之后,它的内容就不能再改变了,假如网页上有个地方显示了一个数字 1,你想把它变成 2,唯一的方式就是让服务器重新写整张新的网页,把有数字 1 的地方改成 2,然后浏览器再将新生成的网页整个重新显示一遍。有了 JavaScript 之后,它能够动态修改网页的内容,因此你可以通过 JavaScript 直接把网页指定位置的 1 改成 2,而不需要把整张网页都重新写一遍。

其次,JavaScript 能够和用户的操作进行交互。当你的鼠标经过网页上的某个按钮的时候,或者你拖拽了网页上的某个图片的时候,JavaScript 可以知道你做的操作,并作出相应的处理。在 JavaScript 发明出来之前,网页是无法和用户直接进行交互的,用户想要和网站交互,唯一的方式就是填写表单,点提交,然后网站生成一张新的网页送回来,在用户的浏览器上重新显示。这样的交互方式不但单调枯燥,而且每次都这么一来一回一刷新,效率也是很成问题的。

最后,JavaScript 能够控制浏览器实现一些特殊的效果和功能。譬如,JavaScript 可以模拟你点击了浏览器的“后退”的效果,自动把你带到你访问过的前一张网页里;譬如,JavaScript 能够弹出一个小窗口,在弹出的小窗口里显示一些小工具;又譬如,JavaScript 能够获取用户机器上的一些信息,譬如屏幕分辨率、色彩、操作系统、时区等信息,通过这些信息为用户优化网页的显示效果等等……有了这些方便的功能,网页可以做得更加方便更加贴心。

为什么用它?

首先,任何时候只要你需要动态改变网页的内容,你都必须使用 JavaScript。举个例子,你写了张网页,上面有个按钮,点击之后会出现一个下拉菜单,这就涉及到网页内容动态改变的问题了。如果不使用 JavaScript,那么生成下拉菜单的唯一方法就只有一开始显示一张没有下拉菜单的网页,点击了那个按钮之后把整张网页都重新刷新一遍,显示另外一张带有下拉菜单的网页,这是无论是对于用户还是对于网站开发者,都是很糟糕的一件事情。

其次,使用 JavaScript 可以把一些工作放到用户的电脑上,减轻服务器的负担。譬如你写了一个调查问卷,让用户填写自己的生日,你想要验证生日的是不是一个合法的日期,如果不使用 JavaScript,你就必须把用户填写的整张调查问卷的全文都发到服务器上,让服务器验证生日的格式,如果不合法的话,再生成一整张网页,把用户已经填好的所有其它问题都原样再抄进去,并在日期的框旁边写上提示说日期不合法,这样一来一回需要浪费很多资源。而有了 JavaScript 之后,你可以把问卷格式的验证都放到 JavaScript 里,直接在用户自己的电脑上进行验证,所有验证通过后才发给服务器,服务器就只需要做一次最终验证就可以了,这样就大大减轻了服务器的负担。

最后,使用 JavaScript 可以让你的网页用起来更像本地应用程序。由于 JavaScript 功能越来越强大,能实现的效果越来越丰富,因此今天越来越多的网站,把很多复杂的功能直接做进了 JavaScript 里面,整个成为了一个应用程序的客户端,从服务器上获取数据,在浏览器上生成界面并运行,而不再像传统网站那样整个界面都在服务器上生成,浏览器仅仅做展示和一些简单的数据验证。使用这样的网站时,用户不再能够体会到明显的页面切换和刷新,整个操作都会变得非常流畅,这都是 JavaScript 带来的便利。

以上。