随笔分类 - JavaScript
摘要:https://amanexplains.com/lexical-envrionment-the%20hidden-part-to-understand-closures/ 词法环境——理解闭包的隐藏拼图 闭包 词法 作用域 JavaScript 当你刚踏入 JavaScript 的世界时,闭包可能
阅读全文
摘要:作为一名开发者,我经常遇到“词法环境”这个术语,但我从未真正花时间去深入探究它。所以,我决定深挖一番,并在这篇文章中记录我的发现——毕竟“分享就是关爱嘛 ;)”。 读完这篇文章后,希望我们都能对什么是词法环境有一个扎实的理解。我们还将一起探索内存中发生了什么、什么是数据结构,以及调用栈是如何工作的。
阅读全文
摘要:// 1. 定义高阶函数 p // p 接收一个函数 t (即 mark),返回一个新的函数(闭包) function p(t) { console.log('⚙️ [p] 正在配置环境...'); // p 返回一个新的函数 return function(...args) { console.l
阅读全文
摘要:首先展示一下Object.create和new创建的源代码,如下所示: function i(name) { this.name = name; // 构造函数体内的代码:初始化属性 console.log("构造函数 i 被执行了!"); } // 定义在原型上的方法 i.prototype.sa
阅读全文
摘要:// 1. 创建一个 Promise(模拟异步) let myPromise = new Promise((resolve) => { setTimeout(() => { resolve("我是异步成功的数据!"); // 成功时调用 }, 1000); }); // 2. 使用 .then()
阅读全文
摘要:Promise.resolve(promise对象) 的作用其实非常直白:它会原封不动地返回这个 Promise 对象。 也就是说,如果你把一个已经存在的 Promise 传进去,Promise.resolve() 不会创建新的 Promise,也不会改变它的状态,而是直接把这个“原对象”吐出来。
阅读全文
摘要:在这篇文章中,我将阐述 ES2017 的异步函数(async functions)本质上是如何在两个较旧的 JavaScript 特性之间“博弈”的:即生成器(generators)和 Promise。原文称这两者都是在 ES2016 规范中更早加入该语言的。 开始阅读之前 .. 本文并非关于 Pr
阅读全文
摘要:第一步还是先来看下具体的代码,如下: function *test(){ let value1 = yield 1; console.log(value1); let value2 = yield 2; console.log(value2); } var iter = test(); consol
阅读全文
摘要:在 JavaScript 中,Map 是 ES6(ECMAScript 2015)引入的一种全新的数据结构,用于存储键值对(key-value pairs)。 专门用来解决传统对象({})无法用非字符串 / 非 Symbol 类型作为键、键会被隐式转换、无法获取键值对数量等痛点。 一、为什么需要 M
阅读全文
摘要:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!-- 引入 jQuery(建议使用CDN或本地文件) --> <script src="https://code.jquery.
阅读全文
摘要:先看代码,如下所示: var x = 0; function foo(x, y = function() { x = 3; console.log(x); }) { console.log('the first is:',x); var x = 2; y(); console.log('the se
阅读全文
摘要:python中,相应的RSA加密代码如下: 首先的前提还是要安装好pycryptodome库 from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 import base64 def pkcs1_v1_5(publ
阅读全文
摘要:随着ES6的引入,迭代器和生成器已经正式添加到JavaScript中。 迭代器能让你遍历任何符合规范的对象。在文章的第一部分,我们会探讨如何使用迭代器,以及如何让任意对象变得可迭代。 这篇博客的第二部分将完全聚焦于生成器(Generators):它们是什么、如何使用,以及在哪些场景下能派上用场。 我
阅读全文
摘要:真正理解Async/Await 你知道它是干什么的,但你知道它是怎么做到的吗? 大多数开发人员对JavaScript有一种爱恨交织的关系,其中一个原因是它的最佳品质之一:易学,难掌握。这种品质值得注意的一个方面是,有多少开发人员倾向于假设语言以某种方式工作,但实际上在幕后发生了一些非常不同的事情。这
阅读全文
摘要:一、初识Promise 先演示一个常见的异步编程误区 —— 在 setTimeout 回调中返回值无法被外层函数捕获。代码如下: function fn(counter) { setTimeout(() => { if (counter > 0) { let total = 0; for (let
阅读全文
摘要:箭头函数和普通函数最大的区别之一是: 普通函数的 this:调用时绑定(谁调用,this 就指向谁)。 箭头函数的 this:定义时绑定(继承自「定义箭头函数时所处的外层作用域」的 this),且箭头函数本身没有自己的 this,无法被 call/apply/bind 修改。 // 全局作用域(浏览
阅读全文
摘要:ES6 为 JavaScript 中的对象方法提供了非常简洁的简写语法,让代码更精简、可读性更高。我会从基础概念到实际用法,帮你彻底理解这个语法特性。 一、核心概念与对比 在 ES6 之前,我们定义对象方法需要完整写出 方法名: function() {} 的形式;ES6 则允许直接省略 funct
阅读全文
摘要:在 JavaScript 中,charCodeAt() 是字符串(String)对象的一个方法,用于返回指定位置字符的 UTF-16 代码单元值(一个介于 0 到 65535 之间的整数)。 基本语法 str.charCodeAt(index) str.charCodeAt(index) index
阅读全文
摘要:在 JavaScript 中,const [opcode, ...operands] = 数组; 使用的是 数组解构赋值 (Array Destructuring) 结合 剩余参数语法 (Rest Syntax)。 具体含义 这行代码的作用是将一个数组“拆分”成两部分: opcode:获取数组的 第
阅读全文
摘要:在 JavaScript 中,splice 和 slice 是两个非常常用但功能截然不同的数组方法。它们的名字很像,容易混淆,但核心区别在于:slice 是用来“截取”的(不修改原数组),而 splice 是用来“剪切/拼接”的(会修改原数组)。 以下是详细的对比和用法说明: 1. 核心区别总结 特
阅读全文

浙公网安备 33010602011771号