【JS红宝书学习笔记】第1、2章 初识JS
第1章 什么是JavaScript
JavaScript 是一门用来与网页交互的脚本语言,包含以下三个组成部分。
- ECMAScript:由 ECMA-262 定义并提供核心功能。
- 文档对象模型(DOM):提供与网页内容交互的方法和接口。
- 浏览器对象模型(BOM):提供与浏览器交互的方法和接口。

1. ES5 & ES6(貌似面试经常会问到ES5、ES6)
- ECMAScript 3.1 变成了 ECMA-262 的第 5 版,于 2009 年 12 月 3 日正式发布。第 5 版致力于厘清第 3 版存在的歧义,也增加了新功能。新功能包括原生的解析和序列化 JSON 数据的 JSON对象、方便继承和高级属性定义的方法,以及新的增强 ECMAScript 引擎解释和执行代码能力的严格模式。第 5 版在 2011 年 6月发布了一个维护性修订版,这个修订版只更正了规范中的错误,并未增加任何新的语言或库特性。
- ECMA-262 第 6 版,俗称 ES6、ES2015 或 ES Harmony(和谐版),于 2015 年 6 月发布。这一版包含了大概这个规范有史以来最重要的一批增强特性。ES6 正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。
2. DOM
文档对象模型(DOM,Document Object Model)是一个应用编程接口(API),用于在 HTML 中使用扩展的 XML。DOM 将整个页面抽象为一组分层节点。HTML 或 XML 页面的每个组成部分都是一种节点,包含不同的数据。(一种树结构)
DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。使用 DOM API,可以轻松地删除、添加、替换、修改节点。

万维网联盟(W3C,World Wide Web Consortium)
3. BOM
浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗口。使用 BOM,开发者可以操控浏览器显示页面之外的部分。而 BOM 真正独一无二的地方,当然也是问题最多的地方,就是它是唯一一个没有相关标准的 JavaScript 实现。
第2章 HTML中的JavaScript
1. <script> 属性
-
async:可选。表示应该立即开始下载脚本,但不能阻止其他页面动作,比如下载资源或等待其他脚本加载。只对外部脚本文件有效。与 defer 不同的是,标记为 async 的脚本并不保证能按照它们出现的次序执行。(异步执行脚本)(这里讲的比较乱,还要看本书后面相关的知识点)

-
defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。在 IE7及更早的版本中,对行内脚本也可以指定这个属性。(立即下载,延迟执行,即推迟执行脚本)

-
integrity:可选。允许比对接收到的资源和指定的加密签名以验证子资源完整性(SRI,Subresource Integrity)。如果接收到的资源的签名与这个属性指定的签名不匹配,则页面会报错,脚本不会执行。这个属性可以用于确保内容分发网络(CDN,Content Delivery Network)不会提供恶意内容。
2. 行内脚本与外部脚本
(1)行内嵌入
<script>function sayHi() {console.log("Hi!");}
</script>
(2)外部导入
<script src="example.js"></script>
<script src="http://www.somewhere.com/afile.js"></script>
使用了 src 属性的<script>元素不应该再在<script>和</script>标签中再包含其他JavaScript 代码。如果两者都提供的话,则浏览器只会下载并执行脚本文件,从而忽略行内代码。 也就是一个<script> 两种方式只能选择其一,优先选择外部导入。
(3)行内代码与外部文件更推荐使用外部文件的原因:
- 可维护性。 JavaScript 代码如果分散到很多 HTML 页面,会导致维护困难。而用一个目录保存所有 JavaScript文件,则更容易维护,这样开发者就可以独立于使用它们的 HTML 页面来编辑代码。
- 缓存。 浏览器会根据特定的设置缓存所有外部链接的JavaScript 文件,这意味着如果两个页面都用到同一个文件,则该文件只需下载一次。这最终意味着页面加载更快。
- 适应未来。 通过把JavaScript 放到外部文件中,就不必考虑用 XHTML 或前面提到的注释黑科技。包含外部 JavaScript 文件的语法在HTML 和 XHTML 中是一样的。
3. 标签位置
所有<script>元素都被放在页面的<head>标签内,这种做法的主要目的是把外部的 CSS 和 JavaScript 文件都集中放到一起。不过,把所有 JavaScript文件都放在<head>里,也就意味着必须把所有 JavaScript 代码都下载、解析和解释完成后,才能开始渲染页面(页面在浏览器解析到<body>的起始标签时开始渲染)。对于需要很多 JavaScript 的页面,这会导致页面渲染的明显延迟,在此期间浏览器窗口完全空白。为解决这个问题,现代 Web 应用程序通常将所有 JavaScript 引用放在<body>元素中的页面内容后面。这样一来,页面会在处理 JavaScript 代码之前完全渲染页面。用户会感觉页面加载更快了,因为浏览器显示空白页面的时间短了。
以前:

现在:

4. 动态加载脚本
默认异步加载
let script = document.createElement('script');
script.src = 'gibberish.js';
document.head.appendChild(script);
5. <noscript>元素
通过使用<noscript>元素,可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持并启用脚本,则<noscript>元素中的任何内容都不会被渲染。

相关文章:
【JS红宝书学习笔记】第1、2章 初识JS
第1章 什么是JavaScript JavaScript 是一门用来与网页交互的脚本语言,包含以下三个组成部分。 ECMAScript:由 ECMA-262 定义并提供核心功能。文档对象模型(DOM):提供与网页内容交互的方法和接口。浏览器对象模型&…...
学习java
在实验室看见这本书,无聊看了下,写出了第一个java代码 成功下载了eclipse并且汉化。 写了自己的第一个java程序: package ttttt;public class ttttt {public static void main(String[] args) {System.out.println("hello world")…...
Redis日常维护流程及技巧:确保稳定性与性能
目录 一、监控和报警设置 1.实时监控:洞察Redis的脉搏 (1). 资源使用监控 (2). 数据访问模式监控 (3). 持久化监控 (4). 客户端连接 2.报警机制:快速响…...
牛客华为机试题——难度:入门(python实现)
HJ7 取近似值 HJ9 提取不重复的整数 HJ46 截取字符串 HJ58 输入n个整数,输出其中最小的k个 HJ101 输入整型数组和排序标识,对其元素按照升序或降序进行排序 HJ7 取近似值 描述:写出一个程序,接受一个正浮点数值,输…...
数据结构与算法学习笔记之线性表五---循环链表的表示和实现(C++)
目录 前言 1.双向链表的定义 2.双向链表的表示和实现 1.定义 2.初始化 3.销毁 4.清空 5.表长 6.获取数据元素 7.前驱节点 8.后继节点 9.插入 10.删除 11.遍历 12.完整代码 前言 记录下双向链表的表示和实现。 1.循环链表的定义 循环链表(circular linked list)…...
微信小程序生命周期揭秘:从启动到消亡的全过程剖析【附代码】
微信小程序生命周期揭秘:从启动到消亡的全过程剖析 一、小程序生命周期概览核心生命周期函数 二、深入理解生命周期回调2.1 onLoad: 首次亮相的准备2.2 onShow: 重登舞台的瞬间2.3 onReady: 舞台就绪,静待表演2.4 onHide & onUnload: 谨慎离场&#…...
Linux 下载 miniconda
https://repo.anaconda.com/miniconda/ 下载对应版本: wget -c https://repo.anaconda.com/miniconda/Miniconda3-py310_24.3.0-0-Linux-x86_64.sh给下载的文件添加可执行权限 chmod x Miniconda3-py310_24.3.0-0-Linux-x86_64.sh安装 ./Miniconda3-py310_24.3.…...
第十五篇:全面防护:构建不容侵犯的数据库安全策略与实战指南
全面防护:构建不容侵犯的数据库安全策略与实战指南 1. 引言:数据库安全的现代战略 1.1 简介:数据库安全在当今的数字化时代中的重要性 在数字化的浪潮中,数据已成为企业乃至国家的核心资产,其价值不亚于实体世界的黄…...
电脑快速搜索文件及文件夹软件——Everything
一、前言 Everything是一款由voidtools开发的文件搜索工具,主要运行于Windows操作系统上。它的主要功能是快速、高效地搜索电脑上的文件和文件夹名称。Everything通过利用NTFS文件系统的MFT(主文件表)来索引文件,从而实现几乎实时…...
02-登录页面、动态路由、权限等模块开发
权限模块开发流程 前端login页面开发后端SpringSecurity配置后端login接口开发前端页面框架搭建前端路由守卫,状态管理开发前后端完成认证流程 开发Login页面 创建Login页面创建router,可以跳转到Login页面 Login页面 使用element-plus开发 认证功…...
万物生长大会 | 创邻科技再登杭州准独角兽榜单
近日,由民建中央、中国科协指导,民建浙江省委会、中国投资发展促进会联合办的第八届万物生长大会在杭州举办。 在这场创新创业领域一年一度的盛会上,杭州市创业投资协会联合微链共同发布《2024杭州独角兽&准独角兽企业榜单》。榜单显示&…...
(六)Linux的Shell编程(上)
一.Shell Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows …...
CANopen总线_CANOpen开源协议栈
CANopen是自动化中使用的嵌入式系统的通信协议栈和设备配置文件规范。就OSI 模型而言,CANopen 实现了以上各层,包括网络层。 CANopen 标准由一个寻址方案、几个小型通信协议和一个由设备配置文件定义的应用层组成。通信协议支持网络管理、设备监控和节点…...
Rust 语言不支持 goto 语句
一、Rust 不提供 goto 语句 Rust 语言并没有提供 goto 语句。goto 语句在很多现代编程语言中已经不再被推荐使用,因为它可能导致代码的流程变得难以跟踪和理解,特别是在复杂的程序中。Rust 语言设计者选择了更加结构化和可预测的控制流语句,…...
uniapp日期区间选择器
uniapp日期区间选择器 在 uniapp 中创建一个简单的自定义日期范围的日期区间选择器: - 限制有效日期范围开始日期为 2024-01-01,结束日期为当日; - 默认日期区间为当日向前计算的7日区间; - 选择开始时间后,判断不可大…...
k8s job
ReplicaSet 和 DaemonSet 会持续运行任务,永远达不到完成态。但在一个可完成的任务中,其进程终止后,不应该再重新启动。 Job 允许你运行一种 pod,该 pod 在内部进程成功结束时,不重启容器,一旦任务完成&…...
Python---NumPy万字总结【此篇文章内容难度较大,线性代数模块】(3)
NumPy的应用(3) 向量 向量(vector)也叫矢量,是一个同时具有大小和方向,且满足平行四边形法则的几何对象。与向量相对的概念叫标量或数量,标量只有大小,绝大多数情况下没有方向。我们…...
【面试经典题】环形链表
个人主页:一代… 个人专栏:数据结构 在面试中我们经常会遇到有关链表的相关题目,面试官通常会对题目给出拓展 下面我就两个leetcode上的一个双指针的题目为例,并对其进行拓展 题目链接:环形链表 题目描述…...
【联合索引】最左匹配原则是什么?
什么是联合索引 联合索引(Composite Index)是一种索引类型,它由多个列组成。 MySQL的联合索引(也称为复合索引)是建立在多个字段上的索引。这种索引类型允许数据库在查询时同时考虑多个列的值,从而提高查询…...
LeetCode 700.二叉搜索树中的搜索
LeetCode 700.二叉搜索树中的搜索 1、题目 题目链接:700. 二叉搜索树中的搜索 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则…...
海光3330E工控机实战:工业边缘计算与国产x86平台部署指南
1. 项目概述:当工业智能化遇见“中国芯”最近在为一个工业视觉检测的项目选型硬件平台,客户的要求很明确:稳定、可靠、能长时间在产线恶劣环境下跑,还得有足够的算力处理实时图像分析。在对比了市面上常见的几款基于x86或ARM架构的…...
GPT-4万亿参数仅激活2%?揭秘MoE稀疏激活的工程真相
1. 项目概述:参数规模与稀疏激活的真相拆解“GPT-4 Has 1.8 Trillion Parameters. It Uses 2% of Them Per Token.”——这句话过去两年在技术社区反复刷屏,常被当作“大模型已突破算力瓶颈”的佐证,也常被误读为“GPT-4只用360亿参数&#x…...
AI时代什么建站软件功能强大?从GEO流量重构看CMS的智慧进化
2026年,互联网的底层逻辑正在发生一场“静默革命”。如果你的思维还停留在“建一个网站只是为了有个官网给客户看”,那么你可能正在被时代抛弃。当下的AI已经不仅仅是一个聊天工具,它正在重构整个信息的传播秩序。传统的SEO(搜索引…...
为什么你的NotebookLM结论总被质疑?揭秘内部显著性引擎的3层贝叶斯校验链(含源码级日志解析)
更多请点击: https://codechina.net 第一章:NotebookLM显著性判断的底层逻辑悖论 NotebookLM 在处理用户上传文档并生成摘要或回答时,依赖“显著性判断”(Significance Scoring)机制对文本片段进行加权排序。该机制表…...
AXI协议中地址与数据顺序问题解析
1. AXI协议中的地址与数据顺序问题解析在复杂SoC设计中,AXI总线作为ARM公司推出的高性能互连协议,其事务顺序管理直接影响系统性能和功能正确性。这个问题探讨的是当AXI从设备(Slave)依次收到来自三个主设备(M1、M2、M…...
初创团队如何利用 Taotoken Token Plan 有效控制 AI 实验成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用 Taotoken Token Plan 有效控制 AI 实验成本 对于资源有限的初创团队而言,在产品原型和概念验证阶段&…...
【独家实测】ChatGPT-4 Turbo vs GPT-3.5 Turbo单位token成本对比:附Python自动核算脚本(限免24h)
更多请点击: https://codechina.net 第一章:ChatGPT API价格计算的底层逻辑与成本认知 ChatGPT API 的计费并非基于会话时长或请求次数,而是严格依据模型实际处理的 token 数量——包括输入(prompt)和输出(…...
高通量细胞因子/生物因子检测技术介绍
高通量细胞因子/生物因子检测技术介绍—多维免疫分析技术,赋能精准医学与转化研究 导语 伴随精准医学领域持续深耕与转化医学研究的高速推进,细胞因子、趋化因子、生长因子等各类可溶性生物标志物的动态表达变化,成为解析疾病发病机制、研判…...
ElevenLabs支持广西话吗?2024最新实测结果曝光:仅2个API参数决定能否合成地道“梧州腔”
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs广西话语音支持的现状与背景 ElevenLabs 作为全球领先的AI语音合成平台,目前尚未在官方API文档、语言列表或控制台界面中提供对广西话(含南宁白话、梧州话、玉林话等粤…...
《Enterprise Architecture with SAP》—— 从“纸上蓝图”到“场景落地”
上一篇文章(《Enterprise Architecture with SAP》— 从“项目思维”到“企业级全局视角”),我们花了不少篇幅把SAP企业架构的“骨架”搭起来了——五大支柱是什么、方法论怎么走、参考内容给什么蓝图、EA在企业里和谁配合干活。用一句话总结…...
