跳到主要内容JavaScript 基础知识点总结 | 极客日志JavaScriptNode.js大前端
JavaScript 基础知识点总结
综述由AI生成系统梳理了 JavaScript 核心基础知识,涵盖变量声明(var/let/const)、数据类型(原始与引用)、运算符、流程控制(分支与循环)。详细介绍了 Math、Date、字符串、数组及对象等内置对象的方法。同时讲解了函数定义、参数处理、闭包概念以及 DOM 页面交互操作。内容结合代码示例,帮助初学者夯实语法基础,理解动态交互逻辑,为后续学习 ES6+ 及前端框架奠定基础。
墨染流年26K 浏览 前言
JavaScript 作为前端开发的核心编程语言,自 1995 年诞生以来,从最初仅用于页面简单交互的脚本语言,逐步发展为覆盖前端、后端(Node.js)、移动端、桌面端的全栈式语言。它是实现网页动态交互的基础 —— 无论是页面的表单验证、动态内容渲染、样式实时修改,还是复杂的前端框架(React、Vue、Angular)底层逻辑,都离不开 JavaScript 的支撑。如今,JavaScript 已成为 Web 生态中不可或缺的一部分,掌握其核心语法与常用方法,是入门前端开发、实现各类交互需求的必经之路。本文系统梳理 JavaScript 从基础语法到实战应用的核心知识点,结合可复用的代码示例,帮助初学者夯实基础,理解并灵活运用这门语言解决实际开发问题。
一、基础核心语法(入门级)
1. 变量相关
- 变量声明与赋值:涵盖 var、let、const 三种声明方式的区别,var 存在变量提升、函数级作用域,let/const 为块级作用域,const 声明只读常量(引用类型值可修改)。
var a = 10;
let b = 20;
const c = 30;
const obj = {name:"js"}; obj.name = "javascript";
- 变量作用域:全局作用域(在函数外声明,整个页面可访问)、局部作用域(函数内声明,仅函数内访问)、块级作用域(let/const 在 {} 内声明,仅块内访问)。
let globalVar = "全局变量";
function testScope(){
let localVar = "局部变量";
if(true){
let blockVar = "块级变量";
console.log(localVar);
}
console.log(blockVar);
}
console.log(globalVar);
.(localVar);
console
log
2. 数据类型
- 原始类型:字符串(String)、数字(Number)、布尔(Boolean)、undefined、null、Symbol(ES6)、BigInt(ES6),原始类型值不可变。
let str = "hello";
let num = 123;
let bool = true;
let und = undefined;
let nul = null;
- 引用类型:对象(Object)、数组(Array)、函数(Function)等,引用类型值存在堆内存,变量存储的是地址。
let num1 = 10;
let num2 = num1; num2 = 20;
console.log(num1);
let arr1 = [1,2];
let arr2 = arr1; arr2.push(3);
console.log(arr1);
- 类型转换:隐式转换(如 1 + '2' 得到 '12')、显式转换(Number()、String()、Boolean())。
let strNum = "123";
let num = Number(strNum);
let bool = Boolean(0);
console.log(1+"2");
3. 运算符与基本运算
- 算术运算符:+(加 / 拼接)、-(减)、*(乘)、/(除)、%(取模)、++(自增)、–(自减)。
let sum = 10+20;
let mod = 7%3;
let n = 5; n++;
let m = 8; --m;
- 比较运算符:==(值相等)、===(值 + 类型相等)、!=、!==、>、<、>=、<=。
console.log(10=="10");
console.log(10==="10");
let a = true, b = false;
console.log(a && b);
console.log(a || b);
console.log(!a);
二、流程控制(基础)
1. 分支判断
- if/else if/else:根据条件执行不同代码块,支持嵌套。
let score = 85;
if(score >= 90){
console.log("优秀");
}else if(score >= 80){
console.log("良好");
}else{
console.log("及格/不及格");
}
- switch-case:多分支匹配,基于值的全等比较,break 终止分支,default 处理未匹配情况。
let day = 3;
switch(day){
case 1: console.log("周一"); break;
case 2: console.log("周二"); break;
default: console.log("其他日期");
}
2. 循环结构
- for 循环:指定次数循环,适用于已知循环次数的场景(如遍历数组)。
let arr = [10,20,30];
for(let i = 0; i < arr.length; i++){
console.log(arr[i]);
}
- while 循环:先判断条件,满足则执行循环体,需避免无限循环。
let count = 0;
while(count < 3){
console.log(count);
count++;
}
- do-while 循环:先执行一次循环体,再判断条件,至少执行一次。
let num = 5;
do{
console.log(num);
num++;
}while(num < 5);
- 循环控制:break 终止整个循环,continue 跳过当前次循环。
for(let i = 0; i < 5; i++){
if(i === 2) continue;
if(i === 4) break;
console.log(i);
}
三、内置对象与方法
1. Math 对象
- 核心方法:Math.random()(生成 0-1 随机数)、Math.floor()(向下取整)、Math.ceil()(向上取整)、Math.round()(四舍五入)、Math.max()/Math.min()(取最大 / 最小值)、Math.pow()(幂运算)等。
let randomNum = Math.random();
let random100 = Math.floor(Math.random()*100);
let maxNum = Math.max(10,20,30);
let powNum = Math.pow(2,3);
- 随机数专项:生成指定范围随机数(如 1-100)。
function getRandom(min, max){
return Math.floor(Math.random()*(max - min +1))+ min;
}
console.log(getRandom(1,100));
2. Date 日期对象
- 日期创建:new Date()(当前时间)、new Date(2024, 5, 1)(指定时间,月份从 0 开始)、new Date('2024-06-01')。
- 核心方法:getFullYear()(年)、getMonth()(月)、getDate()(日)、getHours()(时)、getMinutes()(分)、getSeconds()(秒)、getTime()(时间戳)。
let now = new Date();
let year = now.getFullYear();
let month = now.getMonth()+1;
let day = now.getDate();
let timestamp = now.getTime();
3. 字符串操作
- 基本操作:拼接(+/concat())、长度(length)、索引访问(str[0])。
let str1 = "hello";
let str2 = "world";
let str3 = str1 + " " + str2;
let len = str1.length;
let firstChar = str1[0];
- 核心方法:charAt()(取指定索引字符)、indexOf()/lastIndexOf()(查找字符 / 子串位置)、slice()/substring()(截取)、replace()(替换)、split()(分割为数组)、toUpperCase()/toLowerCase()(大小写转换)、trim()(去首尾空格)。
let str = " JavaScript ";
let trimStr = str.trim();
let upperStr = trimStr.toUpperCase();
let splitArr = trimStr.split("");
let replaceStr = trimStr.replace("Java","Type");
4. 数组操作
- 基础操作:长度(length)、索引访问 / 修改(arr[0] = 10)。
- 增删改查方法:push()(末尾加)、pop()(末尾删)、unshift()(开头加)、shift()(开头删)、splice()(指定位置增删改)。
let arr = [1,2,3];
arr.push(4);
arr.pop();
arr.unshift(0);
arr.shift();
arr.splice(1,1,5);
- 遍历 / 处理方法:forEach()(遍历)、map()(映射新数组)、filter()(筛选)、reduce()(聚合)、find()(查找元素)、some()/every()(判断是否存在 / 全部满足条件)。
let nums = [1,2,3,4];
nums.forEach((item, index)=>{
console.log(`索引${index}:${item}`);
});
let doubleNums = nums.map(item=> item *2);
let evenNums = nums.filter(item=> item %2===0);
let sum = nums.reduce((prev, curr)=> prev + curr,0);
5. 对象
- 对象创建:字面量方式({})、构造函数方式(new Object())。
- 属性 / 方法操作:访问(obj.name/obj['name'])、修改(obj.name = 'new')、新增(obj.age = 18)、删除(delete obj.age)。
- 对象遍历:for…in 循环遍历可枚举属性。
let person = {
name:"张三",
age:20,
sayHi:function(){
console.log(`你好,我是${this.name}`);
}
};
console.log(person.name);
person.age = 21;
person.gender = "男";
delete person.gender;
person.sayHi();
for(let key in person){
console.log(`${key}:${person[key]}`);
}
四、函数与页面交互
1. 函数
- 函数声明与调用:声明式(function fn() {})、表达式(let fn = function() {})、箭头函数(let fn = () => {})。
function add(a, b){
return a + b;
}
let sub = function(a, b){
return a - b;
};
let mul = (a, b)=> a * b;
console.log(add(1,2));
console.log(sub(5,3));
console.log(mul(2,4));
- 参数:形参 / 实参、默认参数(function fn(a=10) {})、剩余参数(function fn(…args) {})。
function fn(a, b =5){
console.log(a + b);
}
fn(3);
function sumAll(...args){
return args.reduce((prev, curr)=> prev + curr,0);
}
console.log(sumAll(1,2,3));
- 作用域与闭包:函数作用域内变量外部不可访问;闭包(函数嵌套,内层函数访问外层函数变量)。
function outer(){
let num = 10;
return function inner(){
console.log(num);
};
}
let fn = outer();
fn();
2. 页面交互(DOM)
- 元素获取:getElementById()(通过 ID)、getElementsByClassName()(通过类名)、getElementsByTagName()(通过标签名)、querySelector()/querySelectorAll()(通过选择器)。
- 样式修改:element.style.属性 = 值(行内样式)、element.className/element.classList(类名操作)。
- 事件绑定:addEventListener() 绑定点击、输入、鼠标等事件。
- 元素操作:创建(createElement())、插入(appendChild()/insertBefore())、删除(removeChild())。
let btn = document.getElementById("btn");
let list = document.querySelector(".list");
let items = document.querySelectorAll(".list li");
btn.addEventListener("click", function(){
let li = document.createElement("li");
li.textContent = "新列表项";
li.style.color = "red";
li.classList.add("active");
list.appendChild(li);
});
list.removeChild(items[0]);
总结
本文从入门到实战,逐层拆解了 JavaScript 的核心知识点:
- 基础核心语法:覆盖变量声明(var/let/const)、数据类型(原始类型与引用类型)、各类运算符的使用规则,这是编写 JavaScript 代码的底层基础,决定了数据的存储、运算与类型处理逻辑;
- 流程控制:讲解 if/switch 分支判断、for/while/do-while 循环结构及循环控制关键字,解决了代码'按需执行'和'重复执行'的核心需求,是实现业务逻辑分支与批量处理的关键;
- 内置对象与方法:详细介绍 Math、Date、字符串、数组、对象等常用内置对象的核心方法,这些内置能力是处理数学计算、时间操作、数据格式化与批量处理的高效工具,避免重复造轮子;
- 函数与页面交互:涵盖函数的声明、参数处理、闭包特性,以及 DOM 操作的核心方法,函数实现了代码的复用与逻辑封装,DOM 操作则打通了 JavaScript 与 HTML/CSS 的交互通道,是实现页面动态效果的核心手段。
这些知识点构成了 JavaScript 前端开发的基础体系,掌握这些内容不仅能解决日常开发中的基础交互需求,也为后续学习 ES6+ 新特性、前端框架、异步编程等进阶内容奠定了坚实的基础。
相关免费在线工具
- Keycode 信息
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
- Escape 与 Native 编解码
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
- JavaScript / HTML 格式化
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
- JavaScript 压缩与混淆
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online