跳到主要内容JavaScript 零基础入门核心知识点 | 极客日志JavaScript大前端
JavaScript 零基础入门核心知识点
档涵盖 JavaScript 零基础入门核心知识点,包括 Web 前端原理、JS 引入方式、注释、变量与字面量、数据类型及转换、运算符、流程控制(分支与循环)、数组等基础语法。内容循序渐进,适合初学者系统学习 JS 编程规范与逻辑实现。
协议工匠32 浏览 一、Web 前端三大组成 & 浏览器工作原理
Web 前端三剑客(缺一不可)
- HTML:网页的结构层,决定页面有什么内容(骨架)
- CSS:网页的样式层,决定页面长什么样子(美化)
- JavaScript(JS):网页的行为层,决定页面的交互效果、动态逻辑(灵魂)
浏览器的两大核心引擎
浏览器是解析运行前端代码的工具,核心分为 2 部分,各司其职:
- 渲染引擎(浏览器内核):专门解析 HTML + CSS,负责页面的渲染和布局
- JS 引擎:专门解析和执行 JavaScript 代码(例如 Chrome 的 V8 引擎)
二、JavaScript 的引入方式(重点)
JS 是脚本语言,必须写在 HTML 页面中才能运行,共有 3 种引入方式,优先级:外链式 > 内嵌式 > 行内式
1. 行内式(不推荐,了解即可)
直接把 JS 代码写在 HTML 标签的事件属性(on 开头) 或 a 标签的 href 中,特点:JS 和 HTML 强耦合,代码杂乱,维护困难。
<div onclick="alert('点击触发行内 JS')">点击我</div>
<a href="javascript:console.log('a 标签触发 JS')">点我打印内容</a>
2. 内嵌式(推荐练习使用)
在 HTML 页面中,通过 <script> 标签包裹 JS 代码,可写在 <head> 或 <body> 中。
特点:JS 和 HTML 部分分离,适合写少量测试代码/页面专属的简单逻辑。
<script>
alert('我是内嵌式的 JS 代码');
console.log('控制台打印内容');
</script>
3. 外链式(开发推荐,必用)
创建独立的 .js 后缀的 JS 文件,通过 <script> 标签的 src 属性引入,这是开发标准写法。
核心特点:
- JS、HTML、CSS 完全分离,代码结构清晰,可复用性极高
- 一个 JS 文件可以被多个 HTML 页面引入,便于项目维护
语法规范:
<script src="./index.js"></script>
⚠️ 重要注意点:带 src 属性的 script 标签,标签内部不能再写 JS 代码,写了也会被浏览器忽略;如需补充代码,新增一个空的 script 标签即可。
4. script 标签的最佳放置位置
JS 的执行特点:加载后立即执行,执行顺序从上到下,推荐放置在 <body> 闭合标签 </body> 的前面,原因:
- 避免 JS 代码执行时,HTML 标签还未渲染,导致获取标签失败报错
- 先渲染页面内容,再执行 JS,提升用户体验(不会白屏等待)
- 标准写法,行业通用
三、JS 的注释(必备语法,一定要写)
注释:对代码的解释说明,浏览器会忽略所有注释内容,不执行、不渲染。
作用:方便自己理解、方便团队协作,写注释是程序员的基本素养!
单行注释
多行注释
var name = "张三";
var age = 18;
四、字面量 & 变量(JS 的核心基础,重中之重)
1. 字面量
概念:字面量是「固定不变的值」,是 JS 中最基础的数据形式,所见即所得,看到它就知道值和类型。
作用:字面量是用来给变量赋值的「原材料」,可以直接使用,但一般不会单独使用。
常见类型:
- 数字字面量:1、2、3、100、3.14、-5(所有数字)
- 字符串字面量:'张三'、"hello"、
JS 基础(引号包裹的内容,单/双/反引号都可以)
- 布尔字面量:true(真)、false(假)(只有这两个值)
- 特殊字面量:undefined(未定义)、null(空值)
2. 变量
✔️ 核心概念
变量 = 内存中开辟的一块「存储空间」,可以理解为一个装数据的盒子。
作用:存储字面量、存储运算结果、存储程序运行的中间值,变量的值可以随时修改。
✔️ 变量的声明(创建盒子)
使用 关键字 var 声明变量,关键字是 JS 内置的有特殊含义的单词,不能自定义。
var age;
var name, sex, score;
✔️ 变量的命名规则 & 规范(必须遵守 + 建议遵守)
✅ 【命名规则】- 硬性要求,不遵守必报错
- 变量名不能使用 关键字/保留字(如 var、if、for、name 等)
- 变量名只能由:字母 (a-zA-Z)、数字 (0-9)、下划线 (_ )、美元符号 ($) 组成
- 变量名不能以数字开头
- JS 是严格区分大小写的:
age 和 Age 是两个完全不同的变量
✅ 【命名规范】- 软性要求,不遵守不报错,但必须养成习惯
- 见名知意:看到变量名就知道存的是什么,例如:存年龄用
age,存姓名用 userName
- 驼峰命名法:多个单词组成时,第一个单词小写,后面每个单词首字母大写,例如:
userName、userAge、studentScore
- 不要用中文、拼音作为变量名
- 尽量不要用
name 作为变量名(系统有特殊用途)
✔️ 变量的赋值 & 初始化
- 赋值符号:
= (JS 中,等号的作用是「赋值」,不是「等于」)
- 赋值逻辑:把
= 右侧的值,存入左侧的变量中
var age;
age = 18;
var userName = "张三";
var userScore = 99;
✔️ 变量的使用规则(4 种常见情况,必记)
var a;
console.log(a);
var b = 100;
console.log(b);
c = 200;
console.log(c);
console.log(d);
✔️ 变量的更新
变量的值可以随时重新赋值,新值会覆盖旧值,旧值无法找回。
⚠️ 注意:使用变量时不要加引号,加了引号就是「字符串」,不再是变量!
var num = 10;
num = 20;
console.log(num);
console.log('num');
五、JS 的输入 & 输出语句(调试必备)
输出语句(常用,必记 3 个)
作用:把数据展示出来,用于调试代码、查看运行结果,是学习 JS 最常用的语法。
console.log(123);
console.log("张三");
console.log(true);
alert('这是一个提示框');
document.write('我是写入页面的内容');
document.write('<h1>这是一个一级标题</h1>');
输入语句(常用 2 个)
作用:获取用户输入的内容,实现「人机交互」,返回值有固定规则,必记!
var userInput = prompt('请输入你的姓名');
console.log(userInput);
var isAgree = confirm('是否同意协议?');
console.log(isAgree);
六、JS 的数据类型(核心重点,重中之重)
核心说明
- JS 的数据类型分为两大类:基本数据类型(5 种) + 复杂数据类型,本文先讲基础必学的「基本数据类型」。
- 基本数据类型:数字型 (Number)、字符串型 (String)、布尔型 (Boolean)、未定义型 (undefined)、空值型 (null)
JS 是弱类型语言:变量没有固定的类型,声明变量时不需要指定类型,赋值什么类型,变量就是什么类型。
✔️ 1. 数字型 (Number) - 表示所有数字
包含:整数、小数、正负数字、特殊数字,是 JS 中最常用的类型之一。
✅ 包含的内容
100、-5、3.14
0b1010;
012;
0x1a;
2e5;
NaN;
Infinity;
-Infinity;
✅ 数字的取值范围
console.log(Number.MAX_VALUE);
console.log(Number.MIN_VALUE);
✔️ 2. 字符串型 (String) - 表示所有文本内容
✅ 核心规则
- 用 单引号 ''、双引号 ""、反引号 `` 包裹的内容,都是字符串
- 推荐:HTML 中属性用双引号,JS 中字符串用单引号,避免冲突
- 字符串嵌套规则:外单内双、外双内单,不能嵌套同一种引号
✅ 常用语法
var str1 = '我是单引号字符串';
var str2 = "我是双引号字符串";
var str3 = `我是反引号字符串`;
var str4 = '他说:"你好呀"';
console.log('hello'.length);
console.log('你好 JS'.length);
console.log('换行符:\n 我换行了');
console.log('缩进符:\t 我缩进了');
console.log('输出引号:我是\"双引号\"');
console.log('输出斜杠:\\ 我是斜杠');
✔️ 3. 布尔型 (Boolean) - 只有两个值,做判断专用
布尔值是「逻辑判断」的核心,只有两个固定值,没有其他可能:
true → 表示「真」「成立」「是」,参与数学运算时等价于 1
false → 表示「假」「不成立」「否」,参与数学运算时等价于 0
console.log(true + 1);
console.log(false - 1);
console.log(true == 1);
console.log(false == 0);
✔️ 4. 未定义型 (undefined) - 变量的默认值
唯一值:undefined
触发场景:变量只声明,不赋值时,变量的默认值就是 undefined。
var a;
console.log(a);
console.log(undefined + 1);
console.log(undefined + true);
✔️ 5. 空值型 (null) - 表示一个「空盒子」
唯一值:null
含义:表示「空」,主动声明变量为空值,和 undefined 的区别是:
- null:主动的「空」,有明确的含义
- undefined:被动的「未定义」,是变量的默认值
var a = null;
console.log(a);
console.log(null + 1);
console.log(null - true);
✅ 检测数据类型 - typeof 运算符(必用)
✔️ 作用
判断任意数据/变量的「数据类型」,返回值是一个字符串,告知我们检测结果。
✔️ 两种语法格式
console.log(typeof 123);
console.log(typeof 'abc');
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof (10 + 20));
✔️ 必记特殊点
typeof null 的返回值是 'object' → 这是 JS 的历史 bug,记住即可!
console.log(typeof null);
七、数据类型转换(核心重点,面试必考)
核心说明
- JS 是弱类型语言,运算符对「数据类型」有固定要求,当类型不匹配时,会自动转换类型,这个过程叫「类型转换」。
- 类型转换分为 2 种:强制转换(显式转换)、自动转换(隐式转换),都是「把一种类型转为另一种类型」,核心是「转字符串、转布尔值、转数值」三大类。
- 所有转换规则都是「死规则」,记住即可,转数值是重中之重!
✔️ 一、转字符串(2 种强制转换 + 1 种自动转换)
✅ 强制转换(主动转换,推荐)
var num = 123;
console.log(num.toString());
console.log(true.toString());
console.log(String(123));
console.log(String(null));
console.log(String(undefined));
✅ 自动转换(隐式转换,常用)
通过 + 加号 实现,当加号一侧是字符串时,加号会变成「字符串拼接符」,自动把另一侧转为字符串后拼接。
console.log('123' + 456);
console.log(true + 'hello');
console.log(null + '空值');
✔️ 二、转布尔值(1 种强制转换 + 1 种自动转换,必记规则)
✅ 强制转换:Boolean(数据) → 万能,转换任意类型
✅ 【黄金规则,背会】
在 JS 中,只有 6 个值 转为布尔值是 false,其余所有值转布尔值都是 true!
❌ 转 false 的 6 个值:0、NaN、''(空字符串)、false、null、undefined
console.log(Boolean(0));
console.log(Boolean(''));
console.log(Boolean(null));
console.log(Boolean(undefined));
console.log(Boolean(NaN));
console.log(Boolean(false));
console.log(Boolean(1));
console.log(Boolean(' '));
console.log(Boolean('0'));
✅ 自动转换:! 取反运算符
- 单取反
!:先把数据转为布尔值,再取反
- 双取反
!!:先转布尔值→取反→再取反,等价于直接获取数据的布尔值,开发常用!
console.log(!123);
console.log(!0);
console.log(!!123);
console.log(!!'');
✔️ 三、转数值(重中之重,开发/面试必考,3 种强制转换 + 1 种自动转换)
所有运算中,「转数值」是最常用的,也是规则最多的,必须全部记牢!
✅ 强制转换(3 种,各有规则,全部必记)
1. Number(数据) → 整体转换,把数据当做一个整体
✅ 转换规则:能整体转为数字则转,整体不行则返回 NaN
console.log(Number('123'));
console.log(Number(true));
console.log(Number(false));
console.log(Number(null));
console.log(Number(undefined));
console.log(Number('123abc'));
console.log(Number(''));
2. parseInt(数据) → 解析整数,从左到右逐个解析,只认整数
- 从第一位开始解析,遇到「数字」就保留,遇到「非数字」停止解析
- 第一位不是数字,直接返回 NaN
- 开头/结尾的空格忽略,不认识小数点
console.log(parseInt('123abc'));
console.log(parseInt('88.99'));
console.log(parseInt('a123'));
console.log(parseInt(' 99 100 '));
3. parseFloat(数据) → 解析浮点数,从左到右逐个解析,认识一个小数点
✅ 转换规则:和 parseInt 一致,唯一区别是「能识别一个小数点」
console.log(parseFloat('88.99abc'));
console.log(parseFloat('88.99.123'));
console.log(parseFloat('a88.99'));
✅ 自动转换(隐式转换,开发常用)
除了「+ 加号」可能是字符串拼接,其余所有运算符(- * / % ++ --)都会自动把数据转为数值,规则和 Number() 一致。
console.log('5' - '2');
console.log('10' * 2);
console.log('88.99' / 10);
console.log('abc' - 1);
console.log(+true);
console.log(-null);
八、运算符(JS 的运算规则,必学)
运算符:用于对数据进行「运算/判断/逻辑处理」的符号,JS 的运算符分为以下大类,全部是基础,必记。
优先级:算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
✅ 1. 算术运算符(数学运算)
+ 加 - 减 * 乘 / 除 % 取余(求余数)
++ 自增(变量 +1)-- 自减(变量 -1)
✔️ 重点:自增/自减 前置和后置的区别(必考)
- 前置自增/自减:
++ 变量 / -- 变量 → 先自增/自减,再参与运算(先己后人)
- 后置自增/自减:
变量++ / 变量-- → 先参与运算,再自增/自减(先人后己)
var a = 1;
console.log(++a + 1);
console.log(a++ + 1);
console.log(a);
✅ 2. 比较运算符(判断大小/相等,返回布尔值)
所有比较运算符的返回值都是 布尔值(true/false),用于条件判断,必记 2 个核心:== 等于 和 === 全等
> 大于 < 小于 >= 大于等于 <= 小于等于
== 等于(只比数值,自动类型转换) != 不等于
=== 全等(数值 + 类型都要相等,无转换) !== 不全等
✔️ 黄金规则(必背)
console.log('10' == 10);
console.log(true == 1);
console.log('' == 0);
console.log(null == undefined);
console.log(NaN == NaN);
console.log('10' === 10);
console.log(true === 1);
console.log(null === undefined);
✅ 3. 逻辑运算符(逻辑判断,必记 3 个)
用于多条件组合判断,返回值是「布尔值/原值」,开发中if/循环的条件判断全靠它,核心:短路运算
&& 逻辑与(且):两边都为真,结果才为真;有一个假,结果就为假
|| 逻辑或(或):有一个为真,结果就为真;两边都假,结果才为假
! 逻辑非(取反):把布尔值取反,!true → false,!false → true
✔️ 短路运算规则(开发常用)
表达式 1 && 表达式 2:如果表达式 1 为真,返回表达式 2;如果表达式 1 为假,返回表达式 1(右侧不执行)
表达式 1 || 表达式 2:如果表达式 1 为真,返回表达式 1(右侧不执行);如果表达式 1 为假,返回表达式 2
✅ 4. 赋值运算符(给变量赋值)
= 基础赋值 += 加后赋值 -= 减后赋值 *= 乘后赋值 /= 除后赋值 %= 取余后赋值
var a = 10;
a += 5;
a *= 2;
✅ 5. 三元运算符(简化的 if 判断,常用)
语法:条件表达式 ? 表达式 1 : 表达式 2
规则:条件为 true,执行表达式 1;条件为 false,执行表达式 2
var age = 18;
var res = age >= 18 ? '成年' : '未成年';
console.log(res);
九、流程控制(核心逻辑,JS 的灵魂)
核心概念
流程控制:控制代码的「执行顺序」,决定代码按照什么逻辑运行,分为 3 种结构,所有 JS 逻辑都是这 3 种结构的组合:
- 顺序结构:默认,代码从上到下,依次执行
- 分支结构:根据条件,执行不同的代码(选路走)
- 循环结构:满足条件,重复执行一段代码(反复做)
✔️ 一、分支结构(if 语句 + switch 语句)
✅ 1. if 分支语句(万能,开发首选,能判断所有条件)
① 单分支:满足条件才执行,不满足不执行
② 双分支:二选一,满足执行 if,不满足执行 else(最常用)
if (条件表达式) {
} else {
}
var num = 10;
if (num % 2 === 0) {
console.log('偶数');
} else {
console.log('奇数');
}
③ 多分支:多选一,满足哪个条件就执行哪个,else 可选
if (条件 1) {
} else if (条件 2) {
} else if (条件 3) {
} else {
}
var score = 85;
if (score >= 90) {
console.log('优秀');
} else if (score >= 80) {
console.log('良好');
} else if (score >= 60) {
console.log('及格');
} else {
console.log('不及格');
}
✅ 2. switch 分支语句(适合「定值匹配」,效率高)
语法:根据一个「固定值」匹配不同的 case,执行对应代码,核心是全等匹配(===)
switch (匹配值) {
case 值 1:
执行代码 1;
break;
case 值 2:
执行代码 2;
break;
default:
所有 case 都不匹配时执行;
}
✅ 特点:case 只能写「定值」,不能写范围;break 必须加,否则会出现「case 穿透」;效率比 if 高,适合定值判断(如:月份、星期、成绩等级)。
✔️ 二、循环结构(重复执行代码,必学 3 种)
✅ 循环的 4 个必备条件(缺一不可,否则死循环)
- 初始值:声明变量,作为循环的开始
- 条件表达式:判断是否继续循环
- 循环体:重复执行的代码段
- 更新变量:修改初始值,让循环能结束
✅ 1. while 循环(先判断,后执行,可能一次都不执行)
var 初始值 = 0;
while (条件表达式) {
循环体;
更新变量;
}
var sum = 0;
var i = 1;
while (i <= 100) {
sum += i;
i++;
}
console.log(sum);
✅ 2. do-while 循环(先执行,后判断,至少执行一次)
var 初始值 = 0;
do {
循环体;
更新变量;
} while (条件表达式);
区别:while 是「先判断再执行」,do-while 是「先执行再判断」,适合「必须执行一次」的场景(如:用户输入验证)。
✅ 3. for 循环(开发最常用,语法简洁,推荐)
语法:for(初始值; 条件表达式; 更新变量) { 循环体 }
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum);
✅ 循环控制语句(break / continue,必记)
用于控制循环的执行流程,解决「提前结束循环」的需求:
- break:直接退出整个循环,循环彻底结束,不再执行后续迭代
- continue:跳过本次循环的剩余代码,直接进入下一次循环
✔️ 三、双层 for 循环(进阶,开发常用)
语法:循环中嵌套另一个循环,外层循环执行 1 次,内层循环执行全部次数
作用:处理二维数据(如:数组的数组)、打印图形(正方形、三角形、九九乘法表)
for (var i = 1; i <= 5; i++) {
var str = '';
for (var j = 1; j <= 5; j++) {
str += '* ';
}
console.log(str);
}
十、数组(复杂数据类型入门,必学)
数组的核心概念
数组:是 JS 中一种「存储多个数据的容器」,可以理解为一个「大盒子」,里面能装任意类型的数据(数字、字符串、布尔值、甚至数组)。
特点:数据按「顺序存储」,通过「索引(下标)」访问,索引从 0 开始。
数组的创建方式(2 种)
var arr = [1, 2, '张三', true, null];
var arr2 = new Array(1, 2, 3);
数组的核心语法(必记)
- 访问数组元素:
数组名 [索引] → 索引从 0 开始
- 获取数组长度:
数组名.length → 返回数组元素的个数
- 遍历数组:用 for 循环,遍历所有元素,
arr[i] 访问每一项
var arr = [10, 20, 30, 40];
console.log(arr[0]);
console.log(arr[arr.length - 1]);
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
相关免费在线工具
- 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