JavaScript 的基本语法和用法

JavaScript 是一种高级的、解释型的编程语言,主要用于为网页添加交互性和动态效果。它有着简洁的语法和灵活的特性,可以用于开发各种类型的应用程序,包括网页、移动应用和服务器端应用。本文将详细介绍 JavaScript 的基本语法和常见用法,帮助读者快速入门和掌握这门语言。
变量和数据类型
在 JavaScript 中,变量用于存储数据,数据类型包括数字、字符串、布尔值、对象和数组等。变量的声明可以使用 var、let 或 const 关键字,其中 var 在 ES5 中引入,let 和 const 在 ES6 中引入,且 let 声明的变量具有块级作用域,而 const 声明的变量为常量。
// 使用 var 声明变量
var a = 10;
var b = 'Hello, world!';
var c = true;
// 使用 let 声明变量
let x = 20;
let y = 'JavaScript';
let z = false;
// 使用 const 声明常量
const PI = 3.14159;
JavaScript 中的数据类型包括基本数据类型和引用数据类型,基本数据类型包括数字、字符串、布尔值、null、undefined 和 Symbol(ES6 新增),引用数据类型包括对象和数组。可以使用 typeof 操作符来获取变量的数据类型。
let num = 30;
let str = 'JavaScript';
let bool = true;
let obj = { name: 'Alice', age: 25 };
let arr = [1, 2, 3];
console.log(typeof num); // "number"
console.log(typeof str); // "string"
console.log(typeof bool); // "boolean"
console.log(typeof obj); // "object"
console.log(typeof arr); // "object"
控制流程
JavaScript 中的控制流程主要包括条件语句(if-else)、循环语句(for、while、do-while)和跳转语句(break、continue、return),可以根据条件执行不同的代码块,重复执行特定的代码段,或者跳转到指定位置继续执行程序。
条件语句
条件语句用于根据指定条件来执行不同的代码块。其中 if 语句用于判断条件是否为真,如果条件为真,则执行相应的代码块;else 语句用于处理条件不满足的情况;else if 语句用于处理多个条件的情况。
let age = 18;
if (age < 18) {
console.log('未成年');
} else if (age >= 18 && age < 60) {
console.log('成年人');
} else {
console.log('老年人');
}
循环语句
循环语句用于重复执行特定的代码段,常见的循环有 for、while 和 do-while。其中 for 循环适用于已知循环次数的情况,while 循环适用于条件为真时执行循环体的情况,do-while 循环适用于至少执行一次循环体的情况。
// for 循环
for (let i = 0; i < 5; i++) {
console.log(i);
}
// while 循环
let j = 0;
while (j < 5) {
console.log(j);
j++;
}
// do-while 循环
let k = 0;
do {
console.log(k);
k++;
} while (k < 5);
跳转语句
跳转语句用于控制程序的执行流程,包括 break、continue 和 return。break 用于跳出当前循环或代码段,continue 用于跳过当前循环中的语句,继续下一次循环,return 用于结束函数的执行并返回指定值。
for (let i = 0; i < 10; i++) {
if (i === 5) {
break;
}
console.log(i);
}
for (let j = 0; j < 5; j++) {
if (j % 2 === 0) {
continue;
}
console.log(j);
}
function add(a, b) {
return a + b;
}
console.log(add(3, 5)); // 8
函数和对象
在 JavaScript 中,函数是一段可重复执行的代码块,可以接收参数并返回结果。对象是一种复合数据类型,用于存储多个属性和方法。函数和对象是 JavaScript 中最重要的两个数据类型,可以用于实现封装、继承和多态等面向对象编程的特性。
函数
函数由函数名、参数列表、函数体和返回值组成,可以使用 function 关键字声明函数。函数可以接收任意数量的参数,可以有默认参数值,也可以返回任意类型的值。
// 定义函数
function greet(name) {
return 'Hello, ' + name + '!';
}
// 调用函数
let message = greet('Alice');
console.log(message); // "Hello, Alice!"
对象
对象由多个属性和方法组成,属性是键值对的集合,方法是可以调用的函数。可以使用对象字面量 {} 或构造函数创建对象,可以通过 . 或 [] 访问对象的属性和方法。
// 创建对象
let person = {
name: 'Bob',
age: 30,
greet: function () {
return 'Hello, my name is ' + this.name + '!';
}
};
// 访问对象属性和方法
console.log(person.name); // "Bob"
console.log(person.age); // 30
console.log(person.greet()); // "Hello, my name is Bob!"
数组和字符串
数组是一种有序的集合数据类型,字符串是由字符组成的序列,JavaScript 提供了丰富的数组和字符串处理方法,包括遍历、增删改查等操作。
数组
数组可以包含任意类型的数据,且长度可变,可以使用 [] 或 Array 构造函数创建数组,可以使用索引访问数组元素,也可以使用数组方法进行操作。
// 创建数组
let numbers = [1, 2, 3, 4, 5];
let fruits = new Array('apple', 'banana', 'cherry');
// 访问数组元素
console.log(numbers[0]); // 1
console.log(fruits[1]); // "banana"
// 数组方法
numbers.push(6); // [1, 2, 3, 4, 5, 6]
fruits.pop(); // ['apple', 'banana']
字符串
字符串是不可变的数据类型,可以使用 [] 或 charAt() 方法访问字符串中的字符,也可以使用字符串方法进行操作
let str = 'JavaScript';
// 访问字符串中的字符
console.log(str[0]); // "J"
console.log(str.charAt(4)); // "S"
// 字符串方法
console.log(str.length); // 10
console.log(str.toUpperCase()); // "JAVASCRIPT"
console.log(str.substring(0, 4)); // "Java"
异步编程
JavaScript 是一种单线程的语言,但通过事件循环和回调函数可以实现异步编程,避免阻塞主线程的执行。常见的异步编程方式包括回调函数、Promise 和 async/await。
回调函数
回调函数是一种将函数作为参数传递给另一个函数,并在特定事件发生或条件满足时执行的方式。回调函数可以解决异步操作和事件处理的问题,但可能导致回调地狱和可读性降低的问题。
function fetchData(callback) {
setTimeout(() => {
const data = 'Hello, world!';
callback(data);
}, 2000);
}
fetchData((data) => {
console.log(data);
});
Promise
Promise 是 JavaScript 中处理异步操作的一种方式,它表示一个异步操作的最终结果。Promise 有三种状态:pending(进行中)、fulfilled(已成功)和 rejected(已失败),可以通过 then 方法处理异步操作的结果。
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const data = 'Hello, world!';
resolve(data);
}, 2000);
});
}
fetchData().then((data) => {
console.log(data);
});
async/await
async/await 是 ES7 中引入的异步编程方式,建立在 Promise 的基础上,通过 async 声明异步函数,await 等待 Promise 对象的返回结果。async/await 简化了异步代码的书写,并提高了代码的可读性。
async function fetchData() {
return new Promise((resolve) => {
setTimeout(() => {
const data = 'Hello, world!';
resolve(data);
}, 2000);
});
}
async function getData() {
const data = await fetchData();
console.log(data);
}
getData();
总结
JavaScript 是一门多用途的编程语言,广泛应用于网页开发、移动应用和服务器端应用等领域。
极客笔记