网页开发 为何非 JavaScript 不可

2020-01-08 13:33:43 +08:00
 KunMinX

查了一上午,发现 多数搜索结果都只谈 “是什么、怎么用”,却对 “为什么” 绝口不提

我知道这门语言既然存活下来,其中必有商业或非商业的组织出于利益考虑在维护和支持。

但我仍然想从技术角度来搞清楚,为什么是它?它的设计目标是什么?它和其他语言相比,到底有什么不可替代的优势?

8454 次点击
所在节点    程序员
79 条回复
lovedebug
2020-01-08 13:37:01 +08:00
第一个广泛流行浏览器用了 JavaScript
商业倒逼标准
randyo
2020-01-08 13:38:04 +08:00
因为浏览器支持
codehz
2020-01-08 13:40:29 +08:00
优势就是所有浏览器都支持啊,IE 是支持 VBS,也可以用插件,但是 IE 基本已经死了(
helionzzz
2020-01-08 13:42:57 +08:00
这种从结果推原因没什么意义的。就像你问,为什么是马云创立阿里巴巴,诚然你可以分析他的性格他的家庭等等等等,但是可以马上有人说如果不是马云也可以是张云李云。但事实就是没有张云李云做成了,只有马云做成了。笼统的说一个总结就是个人特质加时代推动造就了他。这个结论放在 JS 上我觉得也没有什么不妥
Biscuits
2020-01-08 13:48:33 +08:00
@helionzzz 我和老哥的想法一样, 但既然小朋友要一个答案,还是给他一个吧。有时候就是这样模糊。

答案: https://en.wikipedia.org/wiki/JavaScript
maichael
2020-01-08 13:50:59 +08:00
有什么不可替代的优势,没有,至少成为所有浏览器标准的时候没有。

有很多事情的发生都是因为偶然。我敢说 Javascript 的崛起很多都是因为偶然。
zappos
2020-01-08 13:52:51 +08:00
js 在 web 里的作用就是个 ir,由于人类不直接写和读,方便编译就好了。
manami
2020-01-08 13:55:30 +08:00
dart 的使命就是替代 js
coolooks
2020-01-08 13:57:33 +08:00
这种问题就跟“人活着,为什么非要吃饭”一样,有什么意义
alphatoad
2020-01-08 13:58:22 +08:00
不啊,你还可以用 web assembly (逃
augustheart
2020-01-08 14:00:04 +08:00
因为现在浏览器大行其道,所以 js 就流行了。
zsdroid
2020-01-08 14:00:43 +08:00
因为 java。
据说 js 刚出来时,java 盛行,为了蹭热度于是命名为 JavaScript。
因为风口的风比较大,所以猪飞起来了啊。
这只能用时势造英雄来解释。
KunMinX
2020-01-08 14:01:38 +08:00
@maichael 不排除 js 的存在和地位的确立 真的只是独立事件。

我主要想从技术角度搞明白,这门语言,相比其他语言,在网页开发中,有什么不可替代的特点,哪怕特点只有一个,那也行啊,

比如 它存在 “原型链和继承” 的概念,python 等语言就没有。这个概念有没有什么惊人的特点、对网页开发来说 …
Hoshinokozo
2020-01-08 14:15:31 +08:00
因为它就是为 web 开发而生的,JS 从最初的设计阶段就被定义为一种适合浏览器使用的脚本语言,在此之前也有用 JAVA 写脚本的,但是 JAVA 太罗嗦了,所以 netscape 才会想要设计一款专门用于 web 开发的脚本语言。

而 JS 的流行是因为早期 netscape 的统治地位,以及后来 IE 的衰落,至于为什么不是其他语言,因为早期在浏览器中支持多种语言是成本比较高的,而且那时候的 web 能力有限,根本用不着那些较重的语言,所以 JS 相当于被钦定了。

而现在,WASM 已经进入 W3C 标准了,所以你只要愿意,你可以用 c++或者 RUST 写 WEB,但是 JS 的生态摆在那儿,如同 C#明明比 JAVA 优雅的多,但是国内依旧是 JAVA 的天下,JS 一日不死,尔等终究是太子 233333
renmu123
2020-01-08 14:22:09 +08:00
可以看这一篇文章: https://www.ruanyifeng.com/blog/2011/06/birth_of_javascript.html

当时 js 被很粗糙的设计出来了,连函数的命名也是乱七八糟,一会儿驼峰一会儿下划线,java 和 python 都抄了一点
zappos
2020-01-08 14:28:00 +08:00
@renmu123 ???

一等函数,作用域链和扁平作用域抄的 scheme,这是作者亲口承认的。

虽然 python 也抄的是某个 lisp 方言。
Hellert
2020-01-08 14:29:29 +08:00
用过 VBScript 的都不会有此疑问
love
2020-01-08 14:35:38 +08:00
@renmu123 js 哪有下划线??
murmur
2020-01-08 14:36:14 +08:00
@manami 不是说 webasm 么怎么开始吹 dart 了
GM
2020-01-08 14:37:24 +08:00
这个叫做 de-facto,事实上的标准。
毫无道理可言,人家就是由于天时地利等方面的原因,成为了事实上的标准,其他人只能跟随。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/636120

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX