目录
A. 简介
B. 基础用法
一. 使用
二. 输出
C. 语法
D. HTML DOM
A. 简介
JavaScript 是一种高级的、解释型的编程语言,主要用于网页开发,以下是它的简介:
一、历史与发展
- 诞生
- JavaScript 于 1995 年由 Netscape 公司的 Brendan Eich 设计,最初的目的是在网页中实现一些简单的交互效果,比如验证表单输入、显示动态内容等。它的名字中的“Java”部分是出于当时 Java 语言流行的考虑,但实际上 JavaScript 与 Java 是两种不同的语言,它们在语法、用途等方面有很大差异。
- 发展与标准化
- 随着时间的推移,JavaScript 不断发展和演进。1996 年,Netscape 公司将 JavaScript 提交给欧洲计算机制造商协会(ECMA)进行标准化,最终形成了 ECMAScript 标准。这个标准定义了 JavaScript 的核心语法和基本对象等内容。此后,不同的浏览器厂商按照这个标准实现和改进 JavaScript 的解释器,使得 JavaScript 能够在各种浏览器中运行。
- 近年来,JavaScript 不仅在网页前端开发中占据主导地位,还通过 Node.js 等技术在服务器端开发等领域得到广泛应用。
二、主要特点
- 解释型语言
- JavaScript 是一种解释型语言,这意味着它不需要像 C、C++等编译型语言那样经过复杂的编译过程。它的代码可以直接在浏览器或支持 JavaScript 的环境中逐行解释执行。这种特性使得 JavaScript 的开发和调试相对较为简单和快速,开发者可以在修改代码后立即看到效果。
- 弱类型语言
- JavaScript 是一种弱类型语言,变量在声明时不需要指定数据类型,变量的数据类型可以根据赋值的情况自动转换。例如,一个变量可以先存储一个数字,然后又存储一个字符串。虽然这种灵活性在某些情况下很方便,但也可能导致一些潜在的错误,需要开发者注意类型转换的合理性。
- 面向对象和基于原型
- JavaScript 具有面向对象的特性,但它的面向对象实现方式与传统的基于类的面向对象语言(如 Java)有所不同。JavaScript 是基于原型的面向对象语言,它通过原型链来实现对象的继承和属性共享。这意味着对象可以从其他对象继承属性和方法,并且可以动态地添加、修改和删除对象的属性和方法。
- 事件驱动
- JavaScript 是一种事件驱动的语言,它非常适合处理用户与网页的交互。网页中的各种事件,如鼠标点击、键盘输入、页面加载等,都可以触发相应的 JavaScript 代码执行。通过监听这些事件,开发者可以实现丰富的交互功能,例如当用户点击按钮时显示一个弹出窗口,或者当页面加载完成后自动执行某些操作。
三、应用领域
- 网页前端开发
- 在网页前端开发中,JavaScript 是不可或缺的一部分。它可以用于操作网页的文档对象模型(DOM),实现动态更新网页内容、创建动画效果、验证用户输入等功能。例如,通过 JavaScript 可以在用户滚动页面时动态加载更多内容,或者根据用户的选择显示或隐藏网页的某些部分。
- 随着前端框架和库的不断发展,如 React、Vue.js 和 Angular 等,JavaScript 在构建大型、复杂的单页应用(SPA)方面变得更加高效和便捷。这些框架利用 JavaScript 的特性,提供了更高级的组件化开发模式和更好的代码组织方式,使得前端开发能够实现更高的可维护性和可扩展性。
- 服务器端开发
- Node.js 的出现使得 JavaScript 可以在服务器端运行。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者使用 JavaScript 编写服务器端代码,处理网络请求、访问数据库、实现服务器端的业务逻辑等。Node.js 具有非阻塞 I/O 和事件驱动的特点,使得它在处理高并发请求时表现出色,适用于构建实时应用、聊天服务器、在线游戏服务器等。
- 移动应用开发
- 通过一些框架和工具,如 React Native 和 Ionic 等,开发者可以使用 JavaScript 来构建跨平台的移动应用。这些框架允许开发者使用 JavaScript 和相关技术来编写移动应用的代码,然后将其编译成原生应用可以运行的代码,从而实现一次编写、多平台运行的效果。例如,使用 React Native 可以使用 JavaScript 编写类似于原生应用的界面和交互逻辑,同时可以利用原生平台的功能和特性。
- 桌面应用开发
- 借助 Electron 等框架,JavaScript 也可以用于开发桌面应用程序。Electron 允许开发者使用 Web 技术(HTML、CSS 和 JavaScript)来构建跨平台的桌面应用。例如,Visual Studio Code 就是一个使用 Electron 开发的知名桌面应用,它具有良好的用户界面和丰富的功能,同时可以在不同的操作系统上运行。
总之,JavaScript 是一种功能强大、应用广泛的编程语言,它在网页开发以及其他多个领域都发挥着重要作用,并且随着技术的不断发展,它的应用场景还在不断扩大和深化。
B. 基础用法
一. 使用
1.<script> 标签
在 <head> 或者 <body> 中使用
<script>
document.write("<h1>这是一个标题</h1>");
document.write("<p>这是一个段落</p>");
</script>
2.外部的 JavaScript
<script src="myScript.js"></script>
二. 输出
JavaScript 可以通过不同的方式来输出数据:
- 使用 window.alert() 弹出警告框。
- 使用 document.write() 方法将内容写到 HTML 文档中。
- 使用 innerHTML 写入到 HTML 元素。
- 使用 console.log() 写入到浏览器的控制台。
C. 语法
一、变量声明
- 使用
var
- 在 JavaScript 中,可以使用
var
关键字来声明变量。例如:
- 在 JavaScript 中,可以使用
var name = "John";
var age = 30;
var
声明的变量存在变量提升现象,即变量可以在声明之前使用,其值为undefined
。例如:
console.log(x); // 输出 undefined
var x = 5;
- 使用
let
和const
(ES6 新增)let
也用于声明变量,但它具有块级作用域,这意味着变量只在其声明的代码块内有效。例如:
{
let y = 10;
console.log(y); // 输出 10
}
console.log(y); // 报错,y 未定义
const
用于声明常量,即一旦赋值后就不能再重新赋值。例如:
const PI = 3.14159;
// PI = 3.14; // 这会导致错误,不能重新赋值
二、数据类型
- 基本数据类型
- Number:用于表示数字,包括整数和浮点数。例如:
var num1 = 5;
var num2 = 5.5;
- String:表示文本字符串。可以用单引号或双引号括起来。例如:
var str1 = 'Hello';
var str2 = "World";
- Boolean:只有两个值,
true
和false
,用于表示逻辑真和假。例如:
var isTrue = true;
var isFalse = false;
- Undefined:表示未定义的值。当一个变量声明了但没有赋值时,它的值就是
undefined
。 - Null:表示一个空值,即没有值的对象。它与
undefined
不同,null
是有意表示没有对象,而undefined
表示变量未初始化。
- 复合数据类型(引用类型)
- Object:对象是属性的无序集合,每个属性都有一个名称和一个值。可以通过对象字面量来创建对象。例如:
var person = {
name: "John",
age: 30
};
- Array:数组是一组有序的值的集合。可以通过数组字面量来创建数组。例如:
var numbers = [1, 2, 3, 4, 5];
- Function:函数是可执行的代码块,可以接受参数并返回值。可以通过函数声明或函数表达式来定义函数。例如:
function add(a, b) {
return a + b;
}
// 或者
var subtract = function(a, b) {
return a - b;
};
三、运算符
- 算术运算符
- 包括加法
+
、减法-
、乘法*
、除法/
、取余%
等。例如:
- 包括加法
var result1 = 5 + 3; // 结果为 8
var result2 = 10 % 3; // 结果为 1
- 比较运算符
- 用于比较两个值,返回一个布尔值。例如相等比较
==
、严格相等比较===
(不仅比较值,还比较类型)、大于>
、小于<
、大于等于>=
、小于等于<=
等。例如:
- 用于比较两个值,返回一个布尔值。例如相等比较
var isEqual = 5 == 5; // true
var isStrictEqual = 5 === '5'; // false
- 逻辑运算符
- 包括逻辑与
&&
、逻辑或||
、逻辑非!
。例如:
- 包括逻辑与
var result3 = true && false; // false
var result4 = true || false; // true
var result5 =!true; // false
- 赋值运算符
- 除了基本的赋值
=
,还有复合赋值运算符,如+=
、-=
、*=
、/=
等。例如:
- 除了基本的赋值
var x = 5;
x += 3; // 相当于 x = x + 3,此时 x 的值为 8
四、控制流语句
- 条件语句(
if
、else if
、else
)- 用于根据条件执行不同的代码块。例如:
var num = 10;
if (num > 5) {
console.log("数字大于 5");
} else if (num === 5) {
console.log("数字等于 5");
} else {
console.log("数字小于 5");
}
- 循环语句(
for
、while
、do...while
)for
循环:用于已知循环次数的情况。例如:
for (var i = 0; i < 5; i++) {
console.log(i); // 会依次输出 0, 1, 2, 3, 4
}
while
循环:在循环条件为真时重复执行代码块。例如:
var j = 0;
while (j < 3) {
console.log(j);
j++;
} // 会依次输出 0, 1, 2
do...while
循环:先执行一次代码块,然后在循环条件为真时重复执行。例如:
var k = 5;
do {
console.log(k);
k--;
} while (k > 0); // 会依次输出 5, 4, 3, 2, 1
五、函数定义和调用
- 定义函数
- 如前面提到的,可以使用函数声明或函数表达式来定义函数。函数可以有零个或多个参数。例如:
function greet(name) {
console.log("Hello, " + name);
}
// 或者
var sayGoodbye = function(name) {
console.log("Goodbye, " + name);
};
- 调用函数
- 通过函数名加上括号并传入相应的参数来调用函数。例如:
greet("John"); // 输出 Hello, John
sayGoodbye("Mary"); // 输出 Goodbye, Mary
D. HTML DOM
在 JavaScript(JS)中,HTML DOM(文档对象模型)是一种用于 HTML 和 XML 文档的编程接口。它将网页文档呈现为一个由节点组成的树形结构,通过 JavaScript 可以对这个树形结构进行操作,从而实现动态地改变网页的内容、结构和样式等。
一、HTML DOM 的结构
- 节点类型
- 整个文档是一个文档节点。
- 每个 HTML 元素是元素节点。
- HTML 元素内的文本是文本节点。
- 每个 HTML 属性是属性节点。
- 注释是注释节点。
例如,在以下 HTML 代码中:
<html>
<body>
<p>Hello World!</p>
</body>
</html>
这里有一个文档节点(整个 HTML 文档),一个 <html>
元素节点,一个 <body>
元素节点,一个 <p>
元素节点,以及 <p>
元素内的文本节点“Hello World!”。
- 节点关系
- 父节点:在上面的例子中,
<body>
是<p>
的父节点。 - 子节点:
<p>
是<body>
的子节点。 - 同胞节点:拥有相同父节点的节点互为同胞节点,比如如果
<body>
中还有另一个<p>
元素,那么这两个<p>
元素就是同胞节点。
- 父节点:在上面的例子中,
二、通过 JavaScript 操作 HTML DOM
- 访问元素
- 通过
getElementById
:根据元素的id
属性来获取元素。例如:
- 通过
var element = document.getElementById("myElement");
- 通过
getElementsByTagName
:根据元素的标签名获取元素列表。例如:
var elements = document.getElementsByTagName("p");
- 通过
getElementsByClassName
:根据元素的class
属性获取元素列表。例如:
var elements = document.getElementsByClassName("myClass");
- 改变元素内容
- 使用
innerHTML
属性来设置或获取元素的 HTML 内容。例如:
- 使用
document.getElementById("myDiv").innerHTML = "New content";
- 使用
textContent
或innerText
属性来设置或获取元素的文本内容(不包括 HTML 标签)。例如:
document.getElementById("myP").textContent = "Some text";
- 改变元素属性
- 可以直接通过元素对象的属性来设置或获取属性值。例如:
var img = document.getElementById("myImage");
img.src = "newimage.jpg"; // 设置图像的 src 属性
var width = img.width; // 获取图像的宽度属性
- 添加和删除元素
- 创建新元素:
var newDiv = document.createElement("div");
- 为新元素添加文本:
var newText = document.createTextNode("This is a new div");
newDiv.appendChild(newText);
- 将新元素添加到页面:
document.body.appendChild(newDiv);
- 删除元素:
var elementToRemove = document.getElementById("myElementToRemove");
elementToRemove.parentNode.removeChild(elementToRemove);
三、事件处理
HTML DOM 允许通过 JavaScript 对用户与网页的交互进行响应,这是通过事件处理实现的。
-
常见的事件类型有:
click
:当用户点击元素时触发。mouseover
:当鼠标指针移动到元素上时触发。mouseout
:当鼠标指针移出元素时触发。keydown
:当用户按下键盘上的键时触发。submit
:当表单提交时触发。
-
事件处理的方式:
- 内联方式:在 HTML 标签中直接指定事件处理函数。例如:
<button onclick="alert('Button clicked')">Click Me</button>
- 使用 JavaScript 代码添加事件监听器:
var button = document.getElementById("myButton");
button.addEventListener("click", function() {
alert('Button clicked');
});
HTML DOM 为 JavaScript 提供了一种强大的方式来与网页进行交互和动态操作,使得网页可以实现丰富的功能和良好的用户体验。它是现代 Web 开发中不可或缺的一部分,无论是构建简单的网页还是复杂的 Web 应用程序都需要对其有深入的理解和掌握。