JavaScript 入门全讲解

JavaScript 入门全讲解

  • 一、前言:为什么学习 JavaScript?
  • 二、JavaScript 简史与发展
  • 三、JavaScript 基础语法
    • 3.1 变量声明:var、let、const
    • 3.2 数据类型
    • 3.3 类型判断
    • 3.4 类型转换
  • 四、运算符与表达式
  • 五、流程控制
    • 5.1 条件判断
    • 5.2 switch 语句
    • 5.3 循环结构
  • 六、函数
    • 6.1 函数声明与调用
    • 6.2 箭头函数(ES6)
    • 6.3 函数参数默认值与剩余参数
  • 七、对象与数组操作
    • 7.1 对象基础
    • 7.2 数组基础
  • 八、作用域与闭包
    • 8.1 作用域
    • 8.2 闭包示例
  • 九、异步编程
    • 9.1 回调函数
    • 9.2 Promise 基础
    • 9.3 async/await
  • 十、DOM 操作基础
    • 10.1 获取元素
    • 10.2 修改元素
  • 十一、事件机制
    • 11.1 添加事件监听
  • 十二、模块化基础
    • 12.1 ES6 模块
  • 十三、小项目实战示例:Todo List
  • 十四、常见错误与调试技巧
  • 十五、学习建议与推荐资源
    • 15.1 学习建议
    • 15.2 推荐资源
  • 十六、总结

一、前言:为什么学习 JavaScript?

JavaScript 是现代互联网的灵魂语言,无论是网页、服务器、桌面应用,还是小程序开发,JavaScript 都是核心技能。
掌握 JavaScript 意味着可以:

  • 制作炫酷网页
  • 开发移动应用
  • 搭建 Node.js 后端
  • 制作桌面端 Electron 应用

总结:

学好 JavaScript,走遍天下都不怕。

二、JavaScript 简史与发展

  • 1995年 Netscape 公司推出 LiveScript,后改名 JavaScript。
  • 1997年 成为 ECMA 标准(ECMAScript)。
  • 2015年 发布 ES6(ECMAScript 2015),大幅升级。
  • 之后 每年持续更新:ES7、ES8、ES9…直到今天。

三、JavaScript 基础语法

3.1 变量声明:var、let、const

var a = 1;     // 函数作用域,有变量提升
let b = 2;     // 块级作用域,无提升
const c = 3;   // 块级作用域,常量不可更改

3.2 数据类型

基本类型(7种):

  • Number
  • String
  • Boolean
  • Undefined
  • Null
  • Symbol
  • BigInt

引用类型:

  • Object
  • Array
  • Function

示例:

let num = 100;
let str = "hello";
let flag = true;
let obj = { name: "Tom" };
let arr = [1, 2, 3];

3.3 类型判断

typeof "abc";       // "string"
typeof 123;         // "number"
typeof undefined;   // "undefined"
typeof null;        // "object" (历史遗留 Bug)

引用类型判断:

let arr = [];
console.log(arr instanceof Array); // true

3.4 类型转换

Number("123");    // 123
String(456);      // "456"
Boolean(0);       // false

隐式转换示例:

console.log(1 + "2");  // "12"
console.log(1 - "2");  // -1

四、运算符与表达式

  • 算术运算符:+ - * / %
  • 比较运算符:== != === !== > < >= <=
  • 逻辑运算符:&& || !
  • 赋值运算符:= += -= *= /= %=
  • 三元运算符:条件 ? 表达式1 : 表达式2

示例:

let x = 10;
let y = 20;
let max = x > y ? x : y;

五、流程控制

5.1 条件判断

if (score >= 90) {console.log("优秀");
} else if (score >= 60) {console.log("及格");
} else {console.log("不及格");
}

5.2 switch 语句

switch (fruit) {case "apple":console.log("苹果");break;case "banana":console.log("香蕉");break;default:console.log("未知水果");
}

5.3 循环结构

// for
for (let i = 0; i < 5; i++) {console.log(i);
}// while
let i = 0;
while (i < 5) {console.log(i++);
}// do...while
let j = 0;
do {console.log(j++);
} while (j < 5);

六、函数

6.1 函数声明与调用

function greet(name) {return "Hello, " + name;
}
console.log(greet("Tom"));

6.2 箭头函数(ES6)

const greet = (name) => "Hello, " + name;

6.3 函数参数默认值与剩余参数

function sum(a = 0, b = 0) {return a + b;
}function collect(...args) {return args;
}

七、对象与数组操作

7.1 对象基础

let person = {name: "Alice",age: 25,greet() {console.log("Hi");}
};
console.log(person.name);

7.2 数组基础

let nums = [10, 20, 30];
nums.push(40);   // 添加
nums.pop();      // 删除
nums.forEach(n => console.log(n));

八、作用域与闭包

8.1 作用域

  • 全局作用域
  • 函数作用域
  • 块级作用域(let、const)

8.2 闭包示例

function outer() {let count = 0;return function() {count++;console.log(count);};
}const counter = outer();
counter(); // 1
counter(); // 2

九、异步编程

9.1 回调函数

setTimeout(() => {console.log("延时执行");
}, 1000);

9.2 Promise 基础

const promise = new Promise((resolve, reject) => {setTimeout(() => {resolve("成功");}, 1000);
});promise.then(res => console.log(res));

9.3 async/await

async function getData() {let res = await fetch("https://api.example.com");let data = await res.json();console.log(data);
}

十、DOM 操作基础

10.1 获取元素

let div = document.getElementById("myDiv");
let items = document.querySelectorAll(".item");

10.2 修改元素

div.innerHTML = "新的内容";
div.style.color = "red";

十一、事件机制

11.1 添加事件监听

document.getElementById("btn").addEventListener("click", function() {alert("按钮被点击了");
});

十二、模块化基础

12.1 ES6 模块

导出:

export const name = "Tom";
export function greet() {console.log("Hello");
}

导入:

import { name, greet } from './module.js';
greet();

十三、小项目实战示例:Todo List

简单实现一个添加、删除 Todo 项目的功能:

let todos = [];function addTodo(item) {todos.push(item);render();
}function removeTodo(index) {todos.splice(index, 1);render();
}function render() {console.log("当前待办:", todos.join(", "));
}addTodo("学习JS");
addTodo("完成作业");
removeTodo(0);

十四、常见错误与调试技巧

  • 打印调试:console.log
  • 断点调试:浏览器开发者工具
  • 错误处理:try...catch
try {let res = JSON.parse("{ bad json }");
} catch (error) {console.error("解析失败:", error);
}

十五、学习建议与推荐资源

15.1 学习建议

  • 多动手敲代码
  • 项目驱动学习
  • 阅读源码和文档
  • 坚持每日一点点积累

15.2 推荐资源

  • MDN Web Docs
  • JavaScript.info 中文版
  • 廖雪峰 JavaScript 教程

十六、总结

JavaScript 入门并不复杂,关键是要持续练习、不断深化理解。
随着学习深入,你会发现 JavaScript 世界广阔无比,值得你花时间去探索!


到这里,这篇文章就和大家说再见啦!我的主页里还藏着很多 篇 前端 实战干货,感兴趣的话可以点击头像看看,说不定能找到你需要的解决方案~
创作这篇内容花了很多的功夫。如果它帮你解决了问题,或者带来了启发,欢迎:
点个赞❤️ 让更多人看到优质内容
关注「前端极客探险家」🚀 每周解锁新技巧
收藏文章⭐️ 方便随时查阅
📢 特别提醒:
转载请注明原文链接,商业合作请私信联系
感谢你的阅读!我们下篇文章再见~ 💕

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/80855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python练习:求数字的阶乘

求数字的阶乘 eg:5的阶乘 54321 """ 求数字的阶乘 eg:5的阶乘 5*4*3*2*1 """count 1 for i in range(1,6):count count * iprint(count)运行结果&#xff1a;

传统农耕展陈如何突破?数字多媒体能否重构文化体验边界?

农耕文化是中华民族悠久历史的重要组成部分&#xff0c;它不仅承载着古代先民与自然和谐相处的智慧&#xff0c;也体现了人们对土地和自然的深厚情感。而今&#xff0c;如何有效地传承和展示这一传统文化&#xff0c;成为了一个重要的课题。今日&#xff0c;便让我们聚焦于农耕…

nginx代理websocket时ws遇到仅支持域名访问的处理

最终改造点 proxy_set_header Host 这一行 未改之前遇到的问题&#xff1a; nginx 日志显示 https://aaa.bbbb.cn:7413 被解析成了 IP 地址&#xff0c;这通常是因为 DNS 解析的结果被缓存或某些中间层&#xff08;如负载均衡器、防火墙等&#xff09;将域名替换为 IP 地址。…

YUM/DNF管理工具

YUM (Yellow dog Updater&#xff0c; Modified) &#xff0c; RHEL8 中默认使用的软件批量管理工具由原版本的 yum 换成了速度更快的 dnf &#xff08; DNF Dandified YUM &#xff09;&#xff0c;原有的 yum 命令仅为 dnf 的软链接&#xff0c;当然依旧可以使用。 [root…

易基因:何川团队开发新m6A测序方法 可温和条件下高分辨率/低背景噪声检测m6A修饰|Nature子刊

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 RNA和DNA中的化学修饰在多种生物过程中发挥着关键作用&#xff0c;包括转录调控、RNA降解、蛋白质翻译和免疫调节等。这些修饰已被新的测序方法以单碱基分辨率定量地绘制出来&#xff0c…

前后端分离: vue3+SpringBoot+ElementPlus+Axios+MyBatisPuls

前后端分离: vue3SpringBoot 项目介绍搭建Vue前端工程axios请求响应拦截跨域 搭建后端TableId,TableName分页显示配置Druid数据源带条件的分页查询后端校验lambda表达式说明 项目介绍 &#x1f31f;项目页面 &#x1f31f;技术栈: 1.前端技术栈: Vue3AxiosElementPlus 2.后端技…

序列密码算法ShanLooog512设计原理详解

序列密码算法ShanLooog512设计原理详解 ShanLooog512(闪龙512)为序列密码算法&#xff0c;内部状态为512比特&#xff0c;密钥长度为128或256比特&#xff0c;轮函数为FFFFFFFF&#xff0c;循环轮数为24轮&#xff0c;输出密钥流为512比特的状态。与Salsa20类似&#xff0c;内…

Matplotlib可视化基础

1. 折线图 matplotlib.pyplot.plot() # 主要参数&#xff1a; x,y -- 接收array&#xff0c;表示X轴和Y轴对应的数据&#xff0c;无默认 color -- 接收特定string&#xff0c;指定线条的颜色&#xff0c;默认为None linestyle -- 接收特定string&#xff0c;指定线条的类型…

阿里云直接对系统云盘扩容

阿里云直接对系统云盘扩容 登录阿里云控制台&#xff0c;进入ECS实例管理页面&#xff0c;检查目标磁盘的容量是否已更新为扩容后的数值。通过SSH远程连接服务器&#xff0c;使用命令 lsblk 或 fdisk -l 查看当前磁盘分区和容量&#xff0c;确认扩容后的物理磁盘已被系统识别。…

OpenResty深度解析:从卓伊凡的”隐形主流”论看其深度原理与应用生态-卓伊凡

OpenResty深度解析:从卓伊凡的”隐形主流”论看其深度原理与应用生态-卓伊凡 一、OpenResty技术概述:悄然成为基础设施的”隐形冠军” 1.1 OpenResty的”附带安装”现象 正如技术观察者卓伊凡在其《现代Web基础设施的隐形架构》一文中首次提出的观点:”OpenResty正在以一…

健康养生:开启品质生活的密钥

健康是人生最宝贵的财富&#xff0c;养生则是守护这份财富的关键。科学合理的养生方式&#xff0c;能让我们以更饱满的状态拥抱生活。 合理饮食是健康养生的基石。遵循 “食物多样、谷类为主” 的原则&#xff0c;保证每日摄入足够的蛋白质、碳水化合物、脂肪、维生素和矿物质。…

湖北理元理律师事务所:债务优化的法律机制与民生实践

在债务纠纷日益增多的社会背景下&#xff0c;合法、规范的债务管理服务成为民生需求的重要环节。湖北理元理律师事务所作为经国家司法局注册登记的债事服务机构&#xff0c;以法律为工具&#xff0c;探索出一套覆盖债务咨询、规划与风险防控的服务体系。 1.法律服务的专业化框…

AI日报 - 2025年04月29日

&#x1f31f; 今日概览(60秒速览) ▎&#x1f916; AGI突破 | 巨头CEO预测AGI时间线&#xff0c;5年内或达人类认知水平&#xff1b;Yann LeCun强调多模态训练重要性。 关于AGI定义和实现时间的讨论升温&#xff0c;对超越纯文本训练的需求成为共识。 ▎&#x1f4bc; 商业动向…

【C++】类和对象(4)

目录 1. 类型转换 非explicit的单参数构造函数 示例 explicit的单参数构造函数 示例 不同版本的行为 示例 &#xff08;单参数&#xff09; 示例&#xff08;多参数且其余参数有默认值 &#xff09; 示例&#xff08;多参数且无默认值&#xff09; 2. static成员变量…

苍穹外卖10

WebSocket WebSocket是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工通信----浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并进行双向数据传输。 HTTP协议和WebSocket协议对比&#xff1a; HTTP是短链接 WebSocke…

STM32的Flash映射双重机制

在STM32微控制器中&#xff0c;存在一个重要的内存映射特性&#xff1a;Flash存储器可以同时出现在两个不同的地址区域&#xff0c;而且可以通过重映射功能改变CPU启动时从哪个地址获取初始指令。 STM32的Flash映射双重机制 当描述"通常起始于地址0x00000000&#xff0c…

在 Spring Boot 中实现异常处理的全面指南

在现代 Web 应用开发中&#xff0c;异常处理是确保系统健壮性和用户体验的关键环节。Spring Boot 作为一个功能强大的 Java 框架&#xff0c;提供了灵活的异常处理机制&#xff0c;能够统一管理应用程序中的错误&#xff0c;提升代码可维护性和响应一致性。2025 年&#xff0c;…

学习记录:DAY19

Docker 部署与项目需求分析 前言 人总是本能地恐惧未知&#xff0c;令生活陷入到经验主义的循环之中。但我们终将面对。今天的目标是把 Docker 部署学完&#xff0c;然后对项目进行需求分析。 日程 下午 4:30&#xff1a;Docker 部署项目部分学完了&#xff0c;做下笔记。晚…

Jackson 使用方法详解

Jackson 是 Java 生态中最流行的 JSON 处理库&#xff0c;也是 Spring Boot 的默认 JSON 解析器。它提供了高性能的 JSON 序列化&#xff08;对象 → JSON&#xff09;和反序列化&#xff08;JSON → 对象&#xff09;功能。以下是 Jackson 的全面使用指南。 1. 基础依赖 Mave…

【网络入侵检测】基于源码分析Suricata的统计模块

【作者主页】只道当时是寻常 【专栏介绍】Suricata入侵检测。专注网络、主机安全,欢迎关注与评论。 1. 概要 👋 在 Suricata 的配置文件中,stats 节点用于配置统计信息相关的参数,它的主要作用是控制 Suricata 如何收集和输出统计数据,帮助用户了解 Suricata 的运行状态和…