前言
在当今数字时代,JavaScript已然成为了现代Web开发的基石。从最初作为浏览器中的一个小型脚本语言,到如今成为驱动全球互联网的强大引擎,JavaScript的发展历程本身就是一个令人着迷的故事。
好了开始学习JS吧
1. 如果刚开始了解js,最好看视频对这门语言有个大致了解,这里就不推荐视频资源了,bilibili&YouTube,自行探索吧。
2. 推荐看该文档 JavaScript.info,跟着文档步骤学习,切记要跟着敲代码实际哦,完成前面两步,可能用不了几天
3. 项目实战,这里就推荐Github上找了,后续以项目式的学习方法,可以帮助你更好的掌握js
为什么学JavaScript?
- 多样性和普遍性:JavaScript的应用范围极广,从前端到后端,从web到移动应用,甚至延伸到桌面应用和IoT领域。这种多样性意味着学习JavaScript可以为你打开多个职业方向的大门。
- 就业前景:由于其普遍性,JavaScript开发者的需求量大,就业前景良好。无论是初创公司还是大型科技公司,都在寻找精通JavaScript的人才。
- 持续发展:JavaScript生态系统不断发展,新的框架、工具和技术不断涌现。这意味着作为JavaScript开发者,你将始终处于技术前沿,有机会学习和应用最新的技术。
- 社区支持:JavaScript拥有世界上最大和最活跃的开发者社区之一。这意味着你可以轻松找到资源、解决问题,并与其他开发者交流学习。
- 灵活性:JavaScript的动态性和灵活性使得它能够快速适应不同的编程范式和应用场景,从面向对象编程到函数式编程都能胜任。
- 低入门门槛:相比一些其他编程语言,JavaScript的基础语法相对简单,对新手友好。这使得它成为许多人学习编程的首选语言。
- 创新潜力:JavaScript在Web3、人工智能和其他新兴技术领域也有着广泛的应用,学习JavaScript可以让你参与到这些创新领域的开发中。
考虑到这些因素,学习JavaScript不仅可以提升你的技术技能,还可以为你的职业发展提供广阔的机会。无论你是想成为一名前端开发者、全栈工程师,还是想探索新兴的技术领域,JavaScript都是一个极好的选择。
什么是JavaScript?
JavaScript 最初是为了“让网页活起来”而创建的。 这种语言的程序称为脚本。它们可以直接编写在网页的 HTML 中,并在页面加载时自动运行。
脚本以纯文本形式提供和执行。它们不需要特殊的准备或编译即可运行。在这方面,JavaScript 与另一种称为 Java 的语言非常不同。
为什么叫JavaScript?
当 JavaScript 被创建时,它最初有另一个名字:“LiveScript”。但是Java在当时非常流行,因此决定将新语言定位为Java的“弟弟”会有所帮助。
但随着它的发展,JavaScript 成为一种完全独立的语言,拥有自己的规范,称为 ECMAScript,现在它与 Java 完全没有关系。
JavaScript引擎
今天,JavaScript 不仅可以在浏览器中执行,还可以在服务器上执行,或者实际上在任何具有称为 JavaScript 引擎的特殊程序的设备上执行。
JavaScript引擎(也称为JavaScript的虚拟机)是现代Web开发和Node.js应用程序的核心组件。它负责解析、编译和执行JavaScript代码,并管理内存分配等底层操作。
每个主要的浏览器厂商都有自己的JavaScript引擎实现,这导致了一些有趣的竞争和创新。
不同的引擎有不同的“代号”。例如:
- Google的V8引擎因其高性能而闻名,它不仅用于Chrome浏览器,还是Node.js的核心组件,使JavaScript能够在服务器端高效运行。
- Mozilla的SpiderMonkey是最古老的JavaScript引擎,它随着Web的发展不断演进,为Firefox提供强大的JavaScript执行能力。
- Apple的JavaScriptCore(也称为Nitro)在Safari浏览器中使用,也被用于许多iOS应用程序中。
- Facebook的Hermes引擎是专为移动环境优化的,特别是在React Native应用中,它能提供更快的启动时间和更低的内存使用。
上面的术语最好记住,因为它们用于 Internet 上的开发人员文章。我们也会使用它们。例如,如果“V8 支持某个功能 X”,那么它可能在 Chrome、Opera 和 Edge 中工作。
JavaScript引擎的工作原理
引擎很复杂。但基本原理很简单。
- 解析:将JavaScript代码转换为抽象语法树(AST)
- 编译:将AST转换为字节码或直接编译为机器码
- 执行:运行编译后的代码
- 优化:使用技术如即时编译(JIT)来提高性能
- 内存管理:进行垃圾回收,优化内存使用
引擎在流程的每个步骤中应用优化。它甚至可以在编译脚本运行时进行监视,分析流经它的数据,并根据这些知识进一步优化机器代码。
浏览器的JavaScript能做什么?
现代 JavaScript 是一种“安全”的编程语言。它不提供对内存或 CPU 的低级访问,因为它最初是为不需要它的浏览器创建的。
JavaScript 的功能很大程度上取决于所处的环境。例如,Node.js支持允许 JavaScript 读取/写入任意文件、执行网络请求等的函数。
浏览器内 JavaScript 可以执行与网页操作、与用户交互以及 Web 服务器相关的所有操作。
例如,浏览器内的 JavaScript 能够:
- 向页面添加新的 HTML,更改现有内容,修改样式。
- 对用户操作做出反应,在鼠标点击、指针移动、按键时运行。
- 通过网络向远程服务器发送请求,下载和上传文件(所谓的 AJAX 和 COMET 技术)。
- 获取和设置 cookie,向访客提问,显示消息。
- 请记住客户端(“本地存储”)上的数据。
浏览器内 JavaScript 不能做什么?
JavaScript 在浏览器中的能力受到限制,以保护用户的安全。目的是防止邪恶的网页访问私人信息或损害用户的数据。此类限制的示例包括:
-
文件系统访问:网页上的JavaScript不能读取/写入硬盘上的任意文件,复制它们或执行程序。它无法直接访问操作系统功能。
-
浏览器标签页/窗口操作:现代浏览器允许它处理文件,但访问权限是有限的,并且仅在用户执行某些操作时提供,例如将文件“拖放”到浏览器窗口中或通过
<input>
标签选择它。
有一些方法可以与摄像头/麦克风和其他设备进行交互,但它们需要用户的明确许可。 -
跨域请求:不同的选项卡/窗口通常彼此不了解。有时他们会这样做,例如,当一个窗口使用 JavaScript 打开另一个窗口时。但即使在这种情况下,如果一个页面的 JavaScript 来自不同的站点(来自不同的域、协议或端口),它们可能无法访问另一个页面。
Same Origin Policy
这被称为“Same Origin Policy”。为了解决这个问题,两个页面必须同意进行数据交换,并且必须包含处理它的特殊 JavaScript 代码。
默认情况下,不能向不同源的服务器发送 AJAX 请求,需要服务器端配置 CORS(跨源资源共享)才能实现跨域请求
同样,此限制是为了用户的安全。用户打开的页面
http://javascript.info
不得使用 URLhttp://gmail.com
访问另一个浏览器选项卡 ,例如,并从那里窃取信息。
-
网络访问限制:JavaScript 可以很容易地通过网络与当前页面所在的服务器进行通信。但是它从其他站点/域接收数据的能力受到削弱。虽然可能,但它需要来自远程端的明确协议(以 HTTP 标头表示),这是一个安全限制
如果在浏览器之外(例如在服务器上)使用 JavaScript,则不存在此类限制。现代浏览器还允许可能需要扩展权限的插件/扩展,但需要用户安装并授权
JavaScript的不同之处
JavaScript 至少有三个优点:
- 与 HTML/CSS 完全集成。
- 简单的事情都做得很简单。
- 受所有主流浏览器支持,并默认启用。
JavaScript 是唯一将这三件事结合在一起的浏览器技术。这就是 JavaScript 的独特之处。这就是为什么它是创建浏览器界面的最广泛的工具。也就是说,JavaScript 可用于创建服务器、移动应用程序等。
基于 javascript 的语言
JavaScript 的语法并不适合每个人的需求。不同的人想要不同的功能。因为每个人的项目和需求都不同。因此,出现了大量的新语言,这些语言在浏览器中运行之前会被转译(转换)为 JavaScript。
它们通常会引入一些JavaScript本身不具备的特性,比如静态类型检查、更简洁的语法或者函数式编程的概念。
现代工具使转译变得非常快速和透明,实际上允许开发人员使用另一种语言进行编码,并在“引擎盖下”自动转换它。
常见的基于JavaScript的语言
TypeScript
- 微软开发的静态类型检查语言
- 添加了可选的静态类型、类和接口等特性
- 编译成纯JavaScript
CoffeeScript
- 简化JavaScript语法的语言
- 强调简洁性和可读性
- 编译成等效的JavaScript代码
Dart
- 谷歌开发的面向对象语言
- 可以编译成JavaScript,也可以直接运行
- 用于web和移动应用开发
ClojureScript
- Clojure语言到JavaScript的编译器实现
- 函数式编程范式
- 利用Clojure的强大特性来开发web应用
还有更多。当然,即使我们使用这些转译语言中的一种,我们也应该了解 JavaScript 以真正理解我们在做什么。建议在掌握 JavaScript 之后至少简要地看一下它们。
JavaScript 学习资源
1. 文档
- MDN Web Docs: Mozilla提供的详细JavaScript文档和教程
- JavaScript.info: 现代JavaScript教程,从基础到高级(推荐)
- W3Schools: 简单易懂的JavaScript教程和参考
- 菜鸟教程: 中文JavaScript教程,适合初学者
2. 书籍
- 《JavaScript高级程序设计》(红宝书)
- 《你不知道的JavaScript》系列
- 《Eloquent JavaScript》(雄辩的JavaScript)
- 《JavaScript忍者秘籍》
3. 博客和文章
- Medium: 大量JavaScript相关文章和教程
- DEV Community: 开发者分享的JavaScript技巧和经验
- CSS-Tricks: 虽然主要关注CSS,但也有很多优质的JavaScript内容
4. 播客
- JavaScript Jabber
- Syntax.fm
- JS Party
5. GitHub仓库
- You-Dont-Know-JS: 深入探讨JavaScript核心机制
- 33-js-concepts: 每个JavaScript开发者应该知道的33个概念
- clean-code-javascript: JavaScript版的代码整洁之道
6. 框架和库学习
- React官方文档
- Vue.js官方指南
- Angular官方教程
- Node.js官方文档
7. 社区和论坛
- Stack Overflow
- Reddit的r/javascript子版块
- Discord的JavaScript社区
后续还会完善。。。