JavaScript基础主要包括数据类型、变量和常量、运算符、条件语句、循环语句、函数、对象和面向对象编程、数组、DOM操作以及异步编程等。
数据类型:
JavaScript有基本数据类型和引用数据类型。基本数据类型包括数字(Number)、字符串(String)、布尔值(Boolean)、空值(Null)、未定义(Undefined)和符号(Symbol)。引用数据类型包括对象(Object)和数组(Array)。
变量和常量:
使用var、let或const关键字声明变量和常量。var是ES5的声明变量的方式,let和const是ES6新增的块级作用域声明变量和常量的方式。
var x = 5; // 声明一个变量x并赋值为5
let y = 10; // 声明一个块级作用域的变量y并赋值为10
const z = 15; // 声明一个块级作用域的常量z并赋值为15
运算符:
JavaScript支持各种运算符,包括算术运算符(+、-、、/、%)、赋值运算符(=、+=、-=、=、/=)、比较运算符(、=、!=、!==、>、<、>=、<=)、逻辑运算符(&&、||、!)等。
条件语句:
使用if语句、switch语句等进行条件判断和分支控制。
let num = 5;
if (num > 0) {
console.log("Positive");
} else if (num < 0) {
console.log("Negative");
} else {
console.log("Zero");
}
switch (num) {
case 1:
console.log("One");
break;
case 2:
console.log("Two");
break;
default:
console.log("Other");
break;
}
for (let i = 0; i < 5; i++) {
console.log(i);
}
let j = 0;
while (j < 5) {
console.log(j);
j++;
}
let k = 0;
do {
console.log(k);
k++;
} while (k < 5);
function add(a, b) {
return a + b;
}
const multiply = (a, b) => a * b;
const person = {
name: "John",
age: 30,
greet: function() {
console.log("Hello, " + this.name);
}
};
class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}
getArea() {
return this.width * this.height;
}
}
const numbers = [1, 2, 3, 4, 5];
numbers.push(6); // 在数组末尾添加一个元素
numbers.pop(); // 删除数组末尾的一个元素
numbers.shift(); // 删除数组开头的一个元素
numbers.unshift(0); // 在数组开头添加一个元素
const element = document.createElement("div"); // 创建一个div元素
element.textContent = "Hello, World!"; // 设置元素的文本内容
document.body.appendChild(element); // 将元素添加到文档中
const button = document.getElementById("myButton"); // 获取id为myButton的按钮元素
button.addEventListener("click", function() {
console.log("Button clicked");
});
常见的异步编程方式有回调函数、Promise和async/await。
function fetchData(callback) {
setTimeout(() => {
const data = "Hello, World!";
callback(data); // 异步操作完成后调用回调函数
}, 1000);
}
function processData(data) {
console.log(data);
}
fetchData(processData); // 输出:Hello, World!
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const data = "Hello, World!";
resolve(data); // 异步操作成功时调用resolve
}, 1000);
});
}
fetchData()
.then(data => {
console.log(data); // 输出:Hello, World!
})
.catch(error => {
console.error(error);
});
function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const data = "Hello, World!";
resolve(data); // 异步操作成功时调用resolve
}, 1000);
});
}
async function processData() {
try {
const data = await fetchData();
console.log(data); // 输出:Hello, World!
} catch (error) {
console.error(error);
}
}
processData();
try {
// 可能引发错误的代码
} catch (error) {
// 处理错误的代码
}
const person = {
name: "John",
age: 30
};
const jsonStr = JSON.stringify(person); // 将对象转换为JSON字符串
console.log(jsonStr); // 输出:{"name":"John","age":30}
const jsonObj = JSON.parse(jsonStr); // 将JSON字符串转换为对象
console.log(jsonObj); // 输出:{ name: "John", age: 30 }
// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;
// main.js
import { add, subtract } from "./math.js";
console.log(add(5, 3)); // 输出:8
console.log(subtract(5, 3)); // 输出:2
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.example.com/data", true); // 发送GET请求
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
const response = JSON.parse(xhr.responseText);
console.log(response);
}
};
xhr.send();
const greet = name => `Hello, ${name}!`; // 箭头函数
console.log(greet("John")); // 输出:Hello, John!
const person = {
name: "John",
age: 30
};
const { name, age } = person; // 解构赋值
console.log(name); // 输出:John
console.log(age); // 输出:30
function multiply(a, b = 1) {
return a * b;
}
console.log(multiply(5)); // 输出:5
console.log(multiply(5, 3)); // 输出:15
const numbers = [1, 2, 3];
const newNumbers = [...numbers, 4, 5]; // 展开运算符
console.log(newNumbers); // 输出:[1, 2, 3, 4, 5]