零基础JavaScript全套学习(一):原生基础语法
一、前言JavaScript是网页交互的灵魂很多初学者直接上手写网页却对变量、数据类型、函数、对象这些底层概念一知半解写代码全靠复制粘贴遇到bug无从下手。本篇从零梳理JavaScript核心原生语法从最基础的引入方式到数据类型、流程控制、函数、集合、面向对象把JS地基打牢。只有吃透原生JS后续DOM操作、jQuery框架才能够学的通透。二、JavaScript入门与基础语法1、什么是JavaScriptJavaScript简称JS是运行在浏览器端的脚本语言负责网页的交互效果点击事件、表单校验、数据处理、页面动态修改。HTML负责页面结构CSS负责页面样式JavaScript负责行为交互。2、JS的引入方式① 内部脚本写在页面script标签内script alert(Hello JavaScript); /script② 外部JS文件新建 .js 文件通过script的src引入script srctest.js/script③ 行内写法写在标签事件属性中不推荐button onclickalert(hello)点击/button3、浏览器控制台按F12打开开发者工具切换控制台console面板-console.log(内容)打印输出调试最常用-alert(提示)浏览器弹窗-控制台可以直接写JS代码即时运行测试4、严格模式 use strictJS语法比较松散严格模式可以开启严禁校验规避很多隐式bug。写在脚本或者函数最开头// 必须写在JavaScript第一行 use strict; // 严格模式下变量必须声明不能直接 a10; // 局部变量建议都使用let定义 let a10; console.log(a);作用未声明变量禁止直接使用消除语法隐患推荐开发时开启。三、变量、数据类型详解1、变量声明 let / const / var- let普通变量值可以修改块级作用域推荐- const常量定义之后不能修改必须初始化推荐优先使用- var旧版本语法存在作用域bug尽量避免使用let num10; num20; const PI3.14; // PI3.15; // 报错常量不能修改块级作用域let / const 在 {} 大括号内部定义外面访问不到var 不受大括号限制。2、基础数据类型- number数字、整数、小数JS不区分小数和整数Number123 // 整数123 123.1 // 浮点数123.1 1.123e3 // 科学计数法 -99 // 负数 NaN // not a number Infinity // 表示无限大- string字符串单引号、双引号、反引号abc abc- boolean布尔值 true / false- null空值- undefined变量声明但是没有赋值- object对象、数组引用类型- 逻辑运算 两个都为真结果为真 || 一个为真结果为正 ! 真即假假即真- 比较运算符 等于类型不一样值一样也会判断为true 绝对等于类型一样值一样结果才为true3、字符串① 字符串长度console.log(str.length)② 字符串的可变性不可变③ 大小写转换// 注意这里是方法不是属性 str.toUpperCase() str.toLowerCase()④ 查找字符下标str.indexOf(t)⑤ 截取字符串str.substring(1) // 从第一个字符串截取到最后一个字符串 str.substring(1, 3) // [1, 3)⑥ 分割str.split( )4、数组类型Array可以包含任意的数据类型var arr [1, 2, 3, 4, 5, 6]① 数组长度arr.length② indexOf通过元素获得下标索引arr.indexOf(2)字符串的 1 和数字 1 是不同的③ slice() 截取Array的一部分返回一个新数组类似于String中的substring④ push()pop() 尾部arr.push() // 末尾添加元素 arr.pop() // 末尾删除⑤ unshift()shift() 头部arr.unshift() 头部添加元素 arr.shift() 头部删除⑥ 排序arr.sort()⑦ 元素反转arr.reverse()⑧ concat()(3) [C, B, A] arr.concat([1,2,3]) (6) [C, B, A, 1, 2, 3] arr (3) [C, B, A]注意concat()并没有修改数组只是会返回一个新的数组⑨ 连接符 join打印拼接数组使用特定的字符串连接(3) [C, B, A] arr.join(-) C-B-A5、对象类型对象使用 {key : value} 键值对存储数据描述事物多个属性间使用逗号隔开最后一个属性不加逗号var 对象名 { 属性名属性值 属性名属性值 属性名属性值 } // 定义了一个person对象它有四个属性 var person { name: xiaoming, age: 19, email: 264515365qq.com, score: 99 }JavaScript中的所有的键都是字符串值是任意对象① 对象赋值person.namexiaohong② 使用一个不存在的对象属性不会报错undefinedperson.school undefined③ 动态的删减属性通过 delete 删除对象的属性delete person.name true④ 动态的添加直接给新的属性添加值即可person.school tsinghua⑤ 判断属性值是否在这个对象中xxx in xxxage in person true // 继承 toString in person true⑥ 判断一个属性是否是这个对象自身拥有的 hasOwnProperty()person.hasOwnProperty(toString) false person.hasOwnProperty(age) true四、流程控制分支与循环1、分支 if / else、switchlet score80; if(score60){ console.log(及格); }else{ console.log(不及格); }switch适合固定值匹配let day1; switch(day){ case 1: console.log(周一); break; case 2: console.log(周二); break; }2、循环 for while// for循环 for(let i0; i5; i){ console.log(i); } // while循环 let i0; while(i5){ i; }3、iterable迭代遍历数组、Map、Set属于iterable可迭代对象使用 for of 遍历拿到元素值let arr[11, 22, 33] for(let item of arr){ console.log(item); }for in 拿到下标for of 拿到元素遍历数组优先 for of五、函数、内置对象Date、JSON1、函数定义与参数函数封装一段可重复执行代码// 普通函数 function add(a, b){ return ab; } // 匿名函数 let add function(a, b){ return ab; }参数可以不传不传的话参数为 undefined2、arguments、rest是一个JS免费赠送的关键字代表传递进来的所有的参数是一个数组let abs function(x){ console.log(x-x); for(let i0; iarguments.length; i){ console.log(arguments[i]); } if(x0){ return x; }else{ return -x; } }arguments包含所有的参数我们有时候想使用多余的参数来进行附加操作需要排除已有的参数。ES6引入的新特性获取除了已经定义的参数之外的所有参数function aaa(a, b, ...rest){ console.log(a-a); console.log(b-b); console.log(rest); }rest参数只能写在最后面必须用 ... 标识3、Date日期对象处理时间日期var now new Date(); // Sat Aug 07 2025 10:13:06 GMT0800中国标准时间 now.getFullYear(); // 年 now.getMonth(); // 月 now.getDate(); // 日 now.getDay(); // 星期几 now.getHours(); // 时 now.getMinutes(); // 分 now.getSeconds(); // 秒 now.getTime(); // 时间戳 全世界统一 1970 1.1 0:00:00 毫秒数 console.log(new Date(1578106175991)) // 时间戳转为时间4、JSON对象JSON是前后端数据交换格式本质字符串在JavaScript一切皆为对象、任何JS支持的类型都可以用JSON来表示格式·对象都用 {}·数组都用 []·所有的键值对都是用key : value⭐JSON.stringify()JS对象转JSON字符串⭐JSON.parse()JSON字符串转回JS对象let obj {name:小红}; let jsonStr JSON.stringify(obj); let back JSON.parse(jsonStr);JSON和JS对象的区别var obj {a:hello, b:hellob}; var json {a:hello, b:hellob}六、集合Map与SetMap键值对集合key可以是任意类型let map new Map(); map.set(name, zhangsan); // 存 map.get(name); // 取 map.has(name); // 判断是否存在 map.delete(name); // 删除Set无序不重复集合自动去重let set new Set([1,2,2,3]); // 结果 {123} 自动去重 set.add(4); set.has(2); set.delete(1);七、JS面向对象原型与class继承JS是基于原型的面向对象语言⭐原型继承每一个对象都有__proto__原型属性对象可以借用原型上的方法var xiaoming { name:xiaoming }; var Student { study: function(){ console.log(study...); } }; // xiaoming的原型是Student xiaoming.__proto__Student; function Person(name){ this.namename; } // 原型上添加方法 Person.prototype.sayfunction(){ console.log(this.name); } let p1 new Person(xiaowang); p1.say();⭐class继承class Person{ constructor(name){ this.namename; } say(){ console.log(this.name); } } // 继承 class Student extends Person{ constructor(name, age){ super(name); this.ageage; } } let s new Student(xiaoli, 16); s.say();八、结语本篇完成了JavaScript原生全部核心知识点学习。我们掌握了变量、各类数据类型、函数、内置对象、集合以及JS独特的面向对象机制。原生JS是一切前端交互的根基理解好这些内容接下来我们就可以进入网页实操学习DOM、BOM以及i、jQuery库真正实现网页交互效果。

相关新闻

RAG系统优化实战:从检索到生成的性能提升与工程实践

RAG系统优化实战:从检索到生成的性能提升与工程实践

1. 项目概述:从“能用”到“好用”的RAG进化之路最近和几个做AI应用落地的朋友聊天,大家不约而同地提到了同一个痛点:RAG(检索增强生成)系统,初版搭建起来其实不难,LangChain、LlamaIndex这些框…

2026/8/9 12:32:18 阅读更多 →
Java 17 全景学习路线:从核心语法到JUC并发实战

Java 17 全景学习路线:从核心语法到JUC并发实战

你是不是也遇到过这样的困惑:网上Java教程铺天盖地,从“三天速成”到“百万年薪”,但真到自己动手时,却发现要么知识点零散不成体系,要么版本老旧,学了半天连个像样的项目都跑不起来。更头疼的是&#xff0…

2026/8/9 14:28:12 阅读更多 →
3D机械制图学习路径:从CREO参数化建模到工程图实战

3D机械制图学习路径:从CREO参数化建模到工程图实战

1. 从零到一:3D机械制图软件的学习路径规划 很多刚入行的朋友,或者是从二维CAD转向三维设计的工程师,常常会问我一个问题:“这么多3D软件,我该从哪个学起?怎么学才能不走弯路?” 这个问题背后&a…

2026/8/8 8:44:34 阅读更多 →

最新新闻

企业为何需要实搜网站建设来赢得市场信任与长期收益

企业为何需要实搜网站建设来赢得市场信任与长期收益

在这个互联网流量红利逐渐见顶、获客成本日益高昂的时代,很多中小企业主和创业者常常会有这样一个困惑:为什么我投了那么多钱在竞价排名上,效果却越来越差?为什么我的产品在行业内明明不错,却在搜索结果里排不到前排?为什么我的网站打开速度慢得像蜗牛,导致刚进店的客户…

2026/8/10 0:22:12 阅读更多 →
React 性能优化实战:从 memo 渲染对照到 useCallback 函数缓存

React 性能优化实战:从 memo 渲染对照到 useCallback 函数缓存

React 性能优化实战:从 memo 渲染对照到 useCallback 函数缓存前言1. 先理解问题:父组件更新为何会牵动子组件1.1 React 的渲染是一次重新计算1.2 memo 的判断依据是属性是否保持一致2. 建立普通渲染与记忆化渲染的对照组2.1 两个子组件为什么要这样写2.…

2026/8/10 0:21:11 阅读更多 →
VR-Reversal终极指南:3分钟将VR视频转为普通设备可看的2D格式

VR-Reversal终极指南:3分钟将VR视频转为普通设备可看的2D格式

VR-Reversal终极指南:3分钟将VR视频转为普通设备可看的2D格式 【免费下载链接】VR-reversal VR-Reversal - Player for conversion of 3D video to 2D with optional saving of head tracking data and rendering out of 2D copies. 项目地址: https://gitcode.co…

2026/8/10 0:21:11 阅读更多 →
AI数据分析平台有哪些?2026年值得关注的6个产品

AI数据分析平台有哪些?2026年值得关注的6个产品

企业数据量持续膨胀,但真正能从中提取决策信号的团队并不多。传统BI工具解决了"看数据"的问题,却没能解决"问数据"和"用数据"的效率瓶颈。2026年,大模型技术的落地让AI数据分析平台走入生产环境,自…

2026/8/10 0:20:11 阅读更多 →
上海交通大学LaTeX幻灯片模板终极指南:告别排版烦恼,5分钟创建专业演示

上海交通大学LaTeX幻灯片模板终极指南:告别排版烦恼,5分钟创建专业演示

上海交通大学LaTeX幻灯片模板终极指南:告别排版烦恼,5分钟创建专业演示 【免费下载链接】SJTUBeamermin 上海交通大学 LaTeX Beamer 幻灯片模板 - VI 最小工作集 项目地址: https://gitcode.com/gh_mirrors/sj/SJTUBeamermin 还在为学术演示文稿的…

2026/8/10 0:18:11 阅读更多 →
GridPlayer终极指南:如何实现多视频同步播放的专业解决方案

GridPlayer终极指南:如何实现多视频同步播放的专业解决方案

GridPlayer终极指南:如何实现多视频同步播放的专业解决方案 【免费下载链接】gridplayer Play videos side-by-side 项目地址: https://gitcode.com/gh_mirrors/gr/gridplayer 你是否曾经需要在同一个屏幕上同时观看多个视频,但被繁琐的窗口切换搞…

2026/8/10 0:18:11 阅读更多 →

日新闻

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南

GraphQL-CSS API全解析:useGqlCSS、GqlCSS组件与getStyles实用指南 【免费下载链接】graphql-css A blazing fast CSS-in-GQL™ library. 项目地址: https://gitcode.com/gh_mirrors/gr/graphql-css GraphQL-CSS是一个基于GraphQL的CSS-in-GQL™库&#xff0…

2026/8/10 0:00:02 阅读更多 →
告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南

告别语言障碍:KISS Translator 双语翻译插件终极指南 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.com/…

2026/8/10 0:00:02 阅读更多 →
BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案

BepInEx配置管理器:游戏插件配置的终极可视化解决方案 【免费下载链接】BepInEx.ConfigurationManager Plugin configuration manager for BepInEx 项目地址: https://gitcode.com/gh_mirrors/be/BepInEx.ConfigurationManager 你是否曾经因为游戏插件的复杂…

2026/8/10 0:00:02 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/9 0:01:47 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/9 0:01:47 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/9 0:03:48 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/9 17:05:02 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/9 0:45:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/9 17:05:02 阅读更多 →