2020-01-06 对于JS的一些理解

作者:知乎用户
链接:https://www.zhihu.com/question/19901542/answer/13302875
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

问题:什么是脚本?

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

它是什么?

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

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

http://zh.wikipedia.org/wiki/JavaScript
http://en.wikipedia.org/wiki/JavaScript

简单地说,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 带来的便利。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270