JavaScript 核心知识:从语法到进阶原理

一、 JavaScript 简介与生态

本章节主要介绍了 JavaScript 的起源、发展历程以及在现代技术栈中的地位。

  • 发展背景:
    • 由 Netscape 公司的 Brendon Eich 在10天内设计完成,初名 LiveScript。
    • 设计上参考了 C、Java、Scheme 和 Self 语言,早期设计较为仓促。
    • 标准化: 1997年 ECMA 发布 ES1 标准,2009年 ES5 发布(现代 JS 基础),2015年 ES6 发布(引入 Promise 等重大特性)。
  • 前端三剑客关系:
    • HTML (结构层): 骨骼与躯体。
    • CSS (表现层): 衣服与装饰。
    • JavaScript (行为层): 行为与动作。
  • 全能的应用领域:
    • 前端: React, Vue, Angular。
    • 后端: Node.js。
    • 桌面端: Electron (如 VS Code)。
    • 物联网/数据库/移动端: Arduino, MongoDB Shell, React Native。

二、 JavaScript 核心语法

本章节详细讲解了 JS 的基础语法,重点强调了数据类型、拷贝机制及函数特性。

1. 数据类型

  • 基本类型: Object, Number (不分整型浮点型), String, Boolean, null, undefined。
  • ES6 新增类型: Map (键可为任意类型), Set (去重数组)。
  • 深拷贝与浅拷贝 (重点):
    • 浅拷贝: 只复制引用地址,修改新对象会影响原对象。
    • 深拷贝: 完全克隆,新旧对象互不影响。
  • null 与 undefined 的区别: null 表示空值,undefined 表示未定义。推荐赋值用 null,比较用 ===

2. 控制流

  • 循环: while, for, map (返回新数组), forEach (无返回值)。
  • 条件判断: if / else。

3. 函数

  • 定义方式:
    • 函数声明: function foo() {} (存在函数提升,优先加载)。
    • 函数表达式: const foo = function() {} (遵循变量执行顺序)。
    • 匿名函数: 常见于代码混淆。
  • 变量作用域:
    • var:函数作用域,存在变量提升。
    • let / const (ES6):块级作用域,无变量提升。
  • 高阶函数: 接收函数作为参数的函数,常用于回调。
  • 闭包 (Closure):
    • 定义: 函数返回函数,且内部保留了参数和变量的引用。
    • 用途: 匿名自执行函数、封装私有变量、结果缓存。
    • 逆向场景: 面试题经典考点(循环+setTimeout),也是逆向分析中常见的混淆手段。

4. 特殊对象

  • JSON: JSON.stringify (序列化), JSON.parse (反序列化)。
  • Date: 时间处理对象。

三、 JavaScript 进阶知识

1. 事件循环 (Event Loop)

  • 机制: JS 是单线程的,通过事件循环处理异步操作。
  • 结构: 堆 (Heap)、栈 (Stack)、队列 (Queue)。
  • 流程: 主线程执行同步代码 -> 异步任务放入队列 -> 主线程空闲时从队列读取任务执行。

2. 原型链 (Prototype Chain)

  • 核心属性: prototype (原型), __proto__ (实例指向原型的指针), constructor (构造函数)。
  • 查找机制: 访问属性时,先找自身,找不到则顺着 __proto__ 向上查找,直到顶层。
  • 逆向意义: 即使 ES6 引入了 class 语法糖,Babel 转译后的代码(ES5)依然基于原型链,理解它对于阅读逆向代码至关重要。

3. 异步编程演进

  • 回调函数 (Callback): 早期方案,易导致“回调地狱”,代码可读性差。
  • Promise (ES6): 链式调用 (.then, .catch),解决了回调地狱,支持 Promise.all 并行。
  • Async / Await (ES8): 基于 Promise 的语法糖,使异步代码看起来像同步代码,可读性最高。

4. 浏览器存储

  • Cookies: 随请求发送,容量小 (4KB)。
  • LocalStorage: 容量较大 (5MB),持久存储。
  • SessionStorage: 仅当前会话有效,关闭窗口即丢失。
  • IndexedDB: 浏览器端的 SQL 数据库,容量大,结构化存储。

5. 跨域 (Cross-Origin)

  • 定义: 浏览器同源策略限制。
  • 解决方案:
    • CORS: 官方标准,后端设置响应头。
    • JSONP: 利用 <script> 标签特性,仅支持 GET。
    • Iframe + PostMessage。
    • 反向代理 (Nginx): 隐藏后端端口,安全性较高。

6. Webpack 打包

  • 作用: 将模块化开发的前端项目(JS, TS, SCSS 等)编译打包成浏览器可识别的静态文件。
  • 关联: 现代前端网站大多使用 Webpack 打包,理解其加载机制(加载器、插件)非常重要。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇