前端 JavaScript 从入门到高级开发
JavaScript 从 0 基础到高级项目实战完整指南一、JavaScript 是什么JavaScript简称 JS是一门运行在浏览器中的脚本语言现在也能运行在服务端、移动端、桌面端。它主要负责页面交互数据处理动画效果网络请求前后端通信构建 Web 应用开发 Node.js 服务端目前 JavaScript 已经是前端核心语言之一。二、JavaScript 能做什么前端方向网站交互后台管理系统H5 页面移动端页面数据可视化动画游戏后端方向通过 Node.jsAPI 接口开发SSR 服务端渲染文件处理数据库操作桌面端通过ElectronTauri开发桌面应用。移动端通过React NativeUniAppFlutterDart开发 App。三、JavaScript 学习路线推荐第一阶段基础入门重点变量数据类型运算符条件判断循环函数数组对象目标能写基础交互逻辑。第二阶段DOM BOM重点获取元素操作元素事件监听页面跳转本地存储目标能开发动态网页。第三阶段ES6重点let / const箭头函数解构赋值Promiseasync/await模块化目标进入现代前端开发。第四阶段高级 JavaScript重点原型原型链this闭包作用域事件循环深拷贝防抖节流目标能解决复杂业务问题。第五阶段项目实战重点封装模块化工程化网络请求状态管理性能优化目标具备真实项目开发能力。四、JavaScript 基础知识详解1、变量var老版本// 使用 var 声明变量老版本写法varnameTom;问题存在变量提升没有块级作用域let推荐// 使用 let 声明变量推荐letage18;特点有块级作用域不允许重复声明const常量// const 用来声明常量constPI3.14;特点不能重新赋值2、数据类型基本数据类型String Number Boolean Null Undefined Symbol BigInt引用数据类型Object Array Function Date3、运算符算术运算-*/%比较运算 和 区别// 会自动转换数据类型11// true// 不会转换数据类型类型和值都必须相同11// false项目中推荐4、条件判断if// 定义年龄letage20;// 判断年龄是否大于等于18if(age18){// 输出结果console.log(成年人);}switchletday1;switch(day){case1:console.log(星期一);break;}5、循环forfor(leti0;i5;i){console.log(i);}whileleti0;while(i5){console.log(i);i;}6、函数普通函数// 定义加法函数functionadd(a,b){// 返回两个参数相加结果returnab;}箭头函数// 箭头函数写法constadd(a,b)ab;五、数组详细讲解创建数组// 创建数组letarr[1,2,3];常用方法push// 往数组尾部添加元素arr.push(4);poparr.pop();map// 遍历数组并返回一个新数组letnewArrarr.map(itemitem*2);filterletresultarr.filter(itemitem2);findletitemarr.find(itemitem.id1);六、对象详细讲解创建对象// 创建对象letuser{name:Tom,age:18};获取属性console.log(user.name);console.log(user[age]);修改属性user.age20;七、DOM 操作重点DOM 是前端开发核心。获取元素// 通过 id 获取元素document.getElementById(box);document.querySelector(.box);修改内容// 修改元素内容box.innerHTMLHello;修改样式box.style.colorred;八、事件监听点击事件// 给按钮添加点击事件btn.addEventListener(click,function(){// 点击后执行console.log(点击了);});输入事件input.addEventListener(input,function(e){console.log(e.target.value);});九、ES6 核心知识模板字符串letnameTom;console.log(你好${name});解构赋值let[a,b][1,2];let{name,age}user;展开运算符letarr[...arr1,...arr2];Promise// 创建 Promise 对象constpnewPromise((resolve,reject){// 异步成功时调用 resolveresolve(成功);});async/await// async 函数用于处理异步asyncfunctiongetData(){// await 等待异步请求结果constresawaitfetch(url);}十、this 指向普通函数functiontest(){console.log(this);}浏览器中默认window对象方法constuser{name:Tom,say(){console.log(this.name);}}十一、闭包高级重点// 外层函数functionouter(){// 私有变量letcount0;// 返回内部函数returnfunction(){// 每次调用 count 1count;// 输出 countconsole.log(count);}}// 接收返回函数constfnouter();// 调用函数fn();fn();应用防抖节流缓存私有变量十二、原型与原型链functionPerson(name){this.namename;}Person.prototype.sayfunction(){console.log(hello);}十三、事件循环 Event LoopJavaScript 是单线程。依靠同步任务异步任务宏任务微任务完成异步执行。十四、防抖与节流防抖 debounce// 防抖函数functiondebounce(fn,delay){// 定义定时器lettimernull;returnfunction(){// 清除上一次定时器clearTimeout(timer);// 重新开启定时器timersetTimeout((){// 执行函数fn();},delay);}}节流 throttle// 节流函数functionthrottle(fn,delay){// 开关变量letflagtrue;returnfunction(){// 如果开关关闭则直接返回if(!flag)return;// 关闭开关flagfalse;setTimeout((){// 执行函数fn();// 重新打开开关flagtrue;},delay);}}十五、深拷贝与浅拷贝浅拷贝Object.assign()...深拷贝structuredClone(obj)JSON.parse(JSON.stringify(obj))十六、模块化开发CommonJSrequire module.exportsES Moduleexportimport十七、JavaScript 常用方法大全表格版字符串 String 常用方法方法参数用途charAt(index)index索引获取指定位置字符includes(str)str查找内容判断是否包含某字符串indexOf(str)str查找内容返回字符串首次出现位置lastIndexOf(str)str查找内容返回最后一次出现位置slice(start,end)start开始位置end结束位置截取字符串substring(start,end)起始索引、结束索引截取字符串replace(old,new)被替换内容、新内容替换字符串replaceAll(old,new)被替换内容、新内容替换所有匹配内容split(separator)分隔符字符串转数组toUpperCase()无转大写toLowerCase()无转小写trim()无去除两端空格startsWith(str)判断字符串是否以某字符串开头endsWith(str)判断字符串是否以某字符串结尾数组 Array 常用方法方法参数用途push(item)添加元素尾部添加元素pop()无删除最后一个元素shift()无删除第一个元素unshift(item)添加元素头部添加元素splice(index,num,item)开始位置、删除数量、新元素删除/插入/替换slice(start,end)开始、结束位置截取数组concat(arr)数组合并数组join(str)分隔符数组转字符串reverse()无数组反转sort(fn)排序函数数组排序includes(item)查找元素是否包含元素indexOf(item)查找元素返回索引find(fn)回调函数查找符合条件元素findIndex(fn)回调函数查找索引filter(fn)回调函数过滤数组map(fn)回调函数返回新数组forEach(fn)回调函数遍历数组some(fn)回调函数是否有一个满足条件every(fn)回调函数是否全部满足条件reduce(fn,init)回调函数、初始值数组累计计算flat(depth)展开层级数组扁平化对象 Object 常用方法方法参数用途Object.keys(obj)对象获取所有 keyObject.values(obj)对象获取所有 valueObject.entries(obj)对象返回键值对数组Object.assign(target,obj)目标对象、源对象合并对象Object.freeze(obj)对象冻结对象Object.seal(obj)对象密封对象Object.hasOwn(obj,key)对象、key判断自身属性Number 常用方法方法参数用途Number()值转数字parseInt(str)字符串转整数parseFloat(str)字符串转浮点数isNaN(value)值判断是否 NaNNumber.isInteger(num)数字判断是否整数toFixed(num)保留位数保留小数Math 常用方法方法参数用途Math.random()无随机数Math.floor(num)数字向下取整Math.ceil(num)数字向上取整Math.round(num)数字四舍五入Math.max(a,b)多个数字最大值Math.min(a,b)多个数字最小值Math.abs(num)数字绝对值Math.pow(a,b)底数、指数幂运算Math.sqrt(num)数字开平方Date 常用方法方法参数用途new Date()无创建日期对象getFullYear()无获取年份getMonth()无获取月份getDate()无获取日期getDay()无获取星期getHours()无获取小时getMinutes()无获取分钟getSeconds()无获取秒getTime()无获取时间戳DOM 常用方法方法参数用途getElementById(id)id获取元素querySelector(selector)选择器获取第一个元素querySelectorAll(selector)选择器获取多个元素createElement(tag)标签名创建元素appendChild(node)节点添加节点removeChild(node)节点删除节点setAttribute(key,val)属性名、值设置属性getAttribute(key)属性名获取属性addEventListener(type,fn)事件类型、回调添加事件removeEventListener(type,fn)事件类型、回调移除事件Promise 常用方法方法参数用途then(fn)成功回调Promise 成功执行catch(fn)失败回调Promise 错误处理finally(fn)最终执行函数无论成功失败都执行Promise.all(arr)Promise 数组全部成功才成功Promise.race(arr)Promise 数组返回最快结果Promise.allSettled(arr)Promise 数组获取所有结果十八、JavaScript 项目实战核心项目必须掌握1、数据请求fetch axios推荐Axios 官方网站https://axios-http.com/zh/2、本地存储localStorage sessionStorage3、表单验证手机号 邮箱 密码4、权限控制例如登录状态token路由权限5、性能优化重点懒加载防抖节流虚拟列表图片压缩代码分割十九、JavaScript 面试高频问题1、var、let、const 区别核心作用域变量提升是否可重复声明2、箭头函数和普通函数区别重点thisargumentsnew3、闭包是什么函数能够访问外部变量。4、什么是原型链对象通过原型进行属性查找。5、Promise 有哪些状态pending fulfilled rejected6、什么是 Event LoopJS 异步执行机制。二十、JavaScript 学习资源推荐官方文档MDN JavaScript 文档https://developer.mozilla.org/zh-CN/docs/Web/JavaScriptECMAScript 官方规范https://tc39.es/ecma262/学习网站JavaScript.infohttps://javascript.info/菜鸟教程https://www.runoob.com/js/js-tutorial.htmlFreeCodeCamphttps://www.freecodecamp.org/工具推荐编辑器Visual Studio Codehttps://code.visualstudio.com/二十一、JavaScript 后续进阶方向前端框架Vue.jshttps://vuejs.org/Reacthttps://react.dev/Angularhttps://angular.dev/工程化学习ViteWebpackBabelESLintTypeScriptTypeScripthttps://www.typescriptlang.org/Node.jsNode.jshttps://nodejs.org/zh-cn二十二、推荐项目练习路线初级项目计算器轮播图待办事项中级项目音乐播放器博客系统电商网站高级项目后台管理系统低代码平台数据可视化平台二十三、JavaScript 当前发展趋势2026AI 前端越来越多AI UI 生成AI 表单生成AI 代码生成全栈化前端越来越偏Node.js服务端渲染BFFTypeScript 化大型项目基本全面 TS。二十四、真正提升 JavaScript 能力的方法1、多写项目推荐TodoList后台管理系统电商项目音乐播放器聊天室2、多看源码推荐Vue 源码React 源码3、多刷面试题重点异步this闭包原型链4、多调试学会breakpointnetworkperformance二十五、总结JavaScript 的核心成长路线基础语法 → DOM → ES6 → 异步 → 高级原理 → 工程化 → 框架 → 项目实战真正能拉开差距的项目经验代码质量架构能力性能优化工程化能力而不是只会写基础语法。