什么是 Java脚本?以“Hello World”示例进行介绍

⚡ 智能摘要

Java脚本是一种使网页具有交互性的编程语言。本简介解释了…… Java脚本是指脚本的来源、浏览器和 Node.js 如何执行脚本,以及如何编写和运行第一个 Hello World 脚本。

  • 🌐 客户端和服务器: Java脚本最初在浏览器中运行,但现在也可以通过 Node.js、Deno 和 Bun 在服务器上运行。
  • 🕰️ 产地: Brendan Eich 于 1995 年在 Netscape 公司创建了这种语言;它最初被称为 Mocha,然后是 LiveScript,之后又改名为 Mocha。 Java脚本。
  • 📜 标准版: ECMAScript 是官方规范,因此所有现代浏览器都认同相同的核心语言规则。
  • 🛠️ 建立: 只需一个纯文本编辑器和任何现代浏览器,即可编写和测试你的第一个脚本。
  • 🖥️ 先用控制台: 按 F12,打开“控制台”选项卡,然后运行单行命令 Java无需创建任何文件即可编写脚本。
  • 不 Java: Java 和 Java脚本语言共享四个字母,除此之外几乎没有其他共同之处,包括类型系统和运行时环境。
  • 放置: 将脚本放在 script 标签内,或者链接外部 .js 文件,以获得更简洁且可缓存的页面。

什么是 Java脚本

什么是 Java脚本?

Java脚本是一种高级编程语言,它为网页添加行为。它是 Web 的三大核心技术之一:HTML 提供结构,CSS 提供外观, Java脚本负责实现交互功能。例如,每次搜索框在您输入时显示建议、照片轮播滑动,或者注册表单提醒您缺少字段时, Java脚本在后台执行这项工作。

下图展示了脚本如何与普通网页的标记并存。

简介 Java脚本

在其生命的大部分时间里 JavaScript 最初被描述为一种客户端脚本语言,因为它只能在浏览器中运行。但这种描述现在已经不完整了。自 2009 年 Node.js 问世以来,这种语言也被用于驱动 Web 服务器、命令行工具、桌面应用程序和移动应用程序。如今更准确的描述是: Java脚本是一种通用语言,在浏览器中有着异常强大的影响力。

该语言的特征包括:

  • 动态类型: 一个变量现在可能保存一个数字,过一会儿可能保存一个字符串,因此程序运行时会检查类型。
  • 经解读并及时汇编: Chrome 和 Node.js 等引擎会将频繁执行的代码编译成机器代码以提高速度。
  • 多范式: 支持命令式、函数式和面向对象等多种编程风格。
  • 事件驱动: 代码会对点击、按键、计时器和网络响应做出反应,而不是自上而下运行并停止。ping.
  • 单线程,带事件循环: 像网络调用这样的慢速任务会被排队,而不是冻结页面。

💡提示: JavaScript 和 ECMAScript 不是相互竞争的语言。ECMAScript 是书面规范,而 Java脚本是浏览器和 Node.js 实际发布的对该规范的实现。

历史回顾 Java脚本

布伦丹·艾奇创作 Java1995 年,我在 Netscape Communications 公司编写了脚本,并在大约十天内制作出了第一个可运行的原型。该项目在公司内部被称为…… 摩卡它随 Netscape Navigator 2.0 测试版一起发布。 实时脚本 1995年9月,更名为 JavaScript 1995年12月,作为Netscape和Sun Microsystems(拥有该产品的公司)之间营销协议的一部分,该公司收购了该产品。 Java 当时。

Javascript 历史

正是因为改名,很多初学者仍然会这样想。 JavaScript 是轻量级版本 Java这两种语言在设计、所有权和运行时环境上都毫无关联。Netscape 于 1996 年向 ECMA 国际组织提交了该语言,ECMA-262 标准的第一版于 1997 年 6 月发布。下表列出了阅读旧代码时最重要的几个里程碑事件。

年份 里程碑 为何重要
1995 然后是 Mocha,然后是 LiveScript,然后 Java脚本 该语言由 Netscape 公司的 Brendan Eich 创建。
1997 ECMA-262 第一版 该语言获得了与厂商无关的书面标准。
2009 ES5 和 Node.js 的第一个版本 严格模式启动, Java脚本会逃逸出浏览器。
2015 ES6(ECMAScript 2015) 新增了 let、const、箭头函数、类、模块和 Promise。
2016以上 ECMAScript 年度版本 规模较小的游戏内容会在每年六月发布,而不是像以往那样偶尔集中发布。

由于每年的版本发布周期,2015 年之前编写的代码与现代代码看起来明显不同。较早的教程使用 var 到处都是,而当前代码更倾向于 letconst ,尤其是 在声明变量 Java脚本.

什么是 Java脚本用途?

Java脚本不再局限于一些简单的页面技巧。同样的语法现在出现在四个截然不同的地方,这也是为什么它在开发者调查中始终位列最常用语言之一的原因。

区域 什么是 Java脚本在那里运行。 典型工具
浏览器前端 处理点击事件,无需重新加载即可更新页面,验证表单,并绘制图表。 React、Vue、Angular、Svelte
服务器端 处理 HTTP 请求,与数据库通信,并构建 REST 或 GraphQL API。 Node.js、Deno、Bun、Express
移动应用程序 构建 Android 以及来自同一共享代码库的 iOS 应用。 React Native, Ionic电容器
桌面应用 将 Web 界面封装在具有文件系统访问权限的原生窗口中。 电子,金牛座
工具和自动化 打包资源、运行测试套件并驱动浏览器进行端到端测试。 Vite、webpack、Jest、Playwright

游戏、数据可视化、浏览器扩展程序和小型硬件项目也都依赖于它。对于初学者来说,实际意义很简单:你现在花在语法上的精力可以直接应用到以后的服务器端开发、移动端开发和自动化测试中。如果你想了解这门语言在实际问题中的应用,可以尝试完成一系列练习。 实际 Java脚本代码示例 一旦基本技能掌握得比较熟练了。

怎么跑 Java脚本?

Java脚本不会自行执行。它需要一个包含以下内容的宿主环境: Java脚本 “引擎”Chrome 和 Edge 使用的是 V8 引擎。 Firefox 使用 SpiderMonkey,Safari 使用 JavaScriptCore。当浏览器下载 HTML 页面并找到脚本时,它会将该脚本交给其引擎,由引擎解析、编译和运行该脚本。

第二个宿主环境是 Node.js,它将相同的 V8 引擎嵌入到浏览器之外。这样,相同的语言就可以在服务器或终端中运行。其实际优势在于…… Java脚本是 所有现代浏览器都支持它 on Windows,Linux和 macOS因此,您几乎无需担心访客使用哪个浏览器。这相比 VBScript 来说是一项真正的改进,VBScript 之前只能在 Internet Explorer 中运行。 Windows 现在它和 Internet Explorer 本身一样已被弃用。

⚠️警告: 浏览器 Java脚本和Node.js Java脚本共享核心语言,但不共享外部对象。 documentwindow 仅存在于浏览器中,并且 require 文件系统模块仅存在于 Node.js 中。未经检查就在两者之间复制代码会引发引用错误。

您需要的工具

你需要文本编辑器来编写代码,需要浏览器来查看结果。 Notepad++, Visual Studio Code, Sublime Text任何你用起来顺手的编辑器都可以,不过带有语法高亮和括号匹配功能的编辑器能帮你省去很多调试时间。任何主流浏览器都可以: Google Chrome, Firefox, Microsoft Edge或者使用 Safari 浏览器。除了这两样东西之外,无需购买或安装任何其他软件。

一个简单的 Java脚本程序

如果你坚持 Java脚本位于 HTML 文档内部,所有代码都必须位于一个开放标签(例如 `<script>`)内。 <script> 标签和结尾 </script> 标签。浏览器就是通过这个标签来区分你的代码和周围的标记。旧版页面还会设置一个标签。 type 属性,写作 <script type="text/javascript">这在当时存在 VBScript 等竞争性客户端语言时是必要的。现代页面省略了它,因为 HTML5 将其视为…… text/javascript 默认版本为以下两个版本,功能完全相同,且均有效。

你好世界的例子

传统的第一个程序会显示一条消息。请将以下标记放在一个名为“ hello.html 并在浏览器中打开。

<html>
<head>
	<title>My First JavaScript code!!!</title>
	<script type="text/javascript">
		alert("Hello World!");
	</script>
</head>
<body>
</body>
</html>

输出:

A browser dialog box opens containing the text:

Hello World!

注意: type="text/javascript" 在 HTML5 中,这并非必要。以下代码的功能完全相同。

<html>
<head>
	<title>My First JavaScript code!!!</title>
	<script>
		alert("Hello World!");
	</script>
</head>
<body>
</body>
</html>

输出:

A browser dialog box opens containing the text:

Hello World!

一旦页面内容超过几行,就应该将脚本移到单独的页面上。 .js 文件保持标记的可读性,并允许浏览器缓存代码。此比较详细介绍了两者之间的区别。 内部和外部 Java脚本.

如何编写和运行你的第一个脚本

执行有三种切实可行的方法。 Java脚本,初学者应该尝试所有三种脚本,因为每一种都适合不同的情况。

1. 浏览器控制台。 这是最快的选择,而且完全不需要任何文件。打开任意网页,按下 F12 (或 Ctrl+Shift+I Windows 在 Linux 系统中,可以使用 Cmd+Option+I 快捷键。 macOS),然后选择 安慰 Tab 键。输入一行代码,按 Enter 键,结果会立即显示。它是测试单个表达式或检查函数返回值的理想位置。

// Type each line into the browser console and press Enter
console.log(2 + 2);
console.log("Guru" + 99);
console.log(Math.max(4, 12, 7));
console.log(typeof "hello");

输出:

4
Guru99
12
string

注意第二行。将数字 99 添加到字符串“Guru”生成字符串“Guru99”而不是错误,因为 Java脚本会自动将数字转换为文本。这种行为虽然方便,但也是新手容易犯错的典型原因。

2. 一个 HTML 文件。 上面展示的是“Hello World”示例。当代码需要直接操作页面时,例如读取表单值或更改页面元素,都可以使用此示例。

3. 从终端运行 Node.js。 安装 Node.js,并将代码保存到一个文件中。 .js 然后运行扩展程序 node first-script.js什么都没渲染出来,所以 console.log 成为你的输出通道。如果你想练习纯粹的语言特性,而不想使用任何 HTML,那么这就是你应该采用的方法。

// first-script.js
const language = "JavaScript";
const createdBy = "Brendan Eich";
const releaseYear = 1995;

console.log(language + " was created by " + createdBy + " in " + releaseYear + ".");

const usedFor = ["Interactive web pages", "Server apps with Node.js", "Mobile apps"];

usedFor.forEach(function (item, index) {
  console.log(index + 1 + ". " + item);
});

输出:

JavaScript was created by Brendan Eich in 1995.
1. Interactive web pages
2. Server apps with Node.js
3. Mobile apps

这段简短的脚本已经运用了三个你会不断遇到的概念:用以下方式声明的常量 const,一个 排列 包含一个值列表,以及一个传递给它的回调函数。 forEach用以下方式重写同一个循环: for 学习之后,陈述句是一项很有用的练习。 循环 Java脚本.

Java脚本与 Java

这些名称是编程史上最大的意外,它们造成的混乱值得尽早澄清。 Java1995年,Script从LiveScript更名为Script,纯粹是出于市场营销的原因。 Java 是当时网络上最热门的技术。这两种语言是由不同的公司、不同的人为解决不同的问题而设计的。

方面 JavaScript Java
创建者 1995年,布伦丹·艾希在网景公司工作 詹姆斯·戈斯林在太阳微系统公司,1995年
Typing 动态和弱类型 静态且强类型
继续 浏览器引擎和Node.js 此 Java 虚拟机
汇编 由引擎在运行时进行即时编译 预先编译成字节码
对象模型 基于原型,并在 ES6 中添加了类语法 从一开始就以班级为基础
文件扩展名 JS。 .java 文件编译成 .class 文件。
常用 Web前端、API、工具 企业后端 Android、大数据

唯一的真正相似之处在于它们都从 C 语言借用了花括号语法。学习其中一种语言并不能让你学会另一种,尽管共享的语法使得第二种语言更容易阅读。如果严格要求ping 吸引你, TypeScript 在顶部添加一个静态类型层 Java脚本编译成纯文本时 Java脚本,以及其中的区别,请参见此处。 TypeScript 和 Java脚本比较.

基础工作完成后,接下来的自然步骤是: 互动 Java剧本练习, 然后 变量和数据类型,其次是 数组循环。 之后, 面向对象的 Java脚本 解释了对象、原型和类是如何相互配合的,以及 字符串格式化 涵盖了几乎所有脚本中都会用到的文本处理方法。

常见问题

ECMAScript 是书面标准,以 ECMA-262 的形式发布,它定义了语法和内置对象。 JavaScript 是浏览器厂商和 Node.js 提供的该标准的可运行实现。版本名称(例如 ES6)指的是该标准的不同版本。

两者兼有。源代码以纯文本形式交付,并由引擎读取,但像 V8 和 SpiderMonkey 这样的引擎会将频繁执行的函数即时编译成机器代码。最终实现的效果类似于解释型语言,但速度接近编译型语言。

常见原因包括缺少结束脚本标签、外部文件路径错误、拼写错误导致语法错误,或者脚本在目标元素存在之前运行。打开“控制台”选项卡查看具体错误信息。

学习阶段,几行代码使用内部脚本是可以的。但如果代码需要在多个页面重复使用,就应该将其移到外部的 .js 文件中,因为这样浏览器可以缓存代码,并且标记语言也能保持可读性。

他们可以快速生成可运行的代码片段,但也会混用仅限浏览器和仅限 Node.js 的 API,有时还会自创一些方法。请运行所有建议,自行阅读控制台错误信息,并将输出结果视为草稿而非最终答案。

它构建聊天界面,逐个令牌地传输模型响应,并从 Node.js 后端调用模型 API。TensorFlow.js 和 ONNX Runtime Web 等库也直接在浏览器中运行较小的模型。

总结一下这篇文章: