作者文章归档:unew

URL 参数中的特殊字符如何原样保留?


(#、+ 等字符的编码与解码全攻略)

在开发中,我们常遇到 URL 参数因包含 #+ 等特殊字符而丢失或被错误解析的问题。如何确保这些字符原样传递到服务端? 本文将用 3 分钟讲透编码与解码的核心方法!


一、为什么需要编码?

URL 有严格的语法规则,部分字符有特殊含义:
- #:表示页面锚点(片段标识符),浏览器会忽略其后的内容。
- +:在查询参数中默认表示空格(类似 %20)。
- &=:分隔参数键值对。

如果不编码,参数会被截断或误解!


二、如何正确编码参数?

1. 客户端编码(发送请求前)

使用 encodeURIComponent() 对参数值编码(不要用...

Read more

防抖和节流


在 JavaScript 中,防抖(Debounce)和节流(Throttle)是两种常用的优化高频率触发事件的技术,它们的核心目的都是限制函数的执行频率,但应用场景和实现方式有所不同。

防抖(Debounce)

概念:在一定时间内,只有最后一次调用函数才会被执行。 应用场景:搜索框实时联想、窗口大小调整、按钮重复点击等。

实现:

export function debounce<T extends unknown[]>(
  func: (...arg: T) => unknown,
  delay: number
) {
  let timer: number
  return ...

Read more

如何鉴别浏览器位数...


问题:如果我想使用js来判断当前的浏览器是32位还是64位,我该怎么办?有没有靠谱的方法?

为什么会有这个需求呢?因为在执行js任务时,对内存会有一定的要求。如果内存大于512M~1.5GB,那么会很容易出现“内存不足的错误”为什么会有这个需求呢?因为在执行js任务时,对内存会有一定的要求。如果内存大于512M~1.5GB,那么会很容易出现“内存不足的错误”

对于64位浏览器,"Out of Memory" 很少出现;但是在32位的浏览器,出现的很频繁。 那么,就需要在执行JS前,判断一下,当前浏览器是32位的还是64位的。如果是32位的,提示用户可能会遇到的一些问题,并建议升级为...

Read more

挂谷猜想的奇妙世界


一根牙签能“横着”放进一个多小的地方?

“你能在一个任意小的地方,把一根牙签360度地转一圈吗?”

这听起来是不是像魔术?其实,这正是一个叫做挂谷猜想的数学问题!

这幅图展示了一个在三尖瓣线的内部旋转的转针。 在它转动的每一阶段(除了一个端点是在三尖瓣线的一个顶点时),转针与三尖瓣线相交于三个点:两个端点(蓝色)和一切点(黑色)。 转针的中点(红色)描绘了一个直径等于转针一半的长度的圆。

一种“萌芽”方法,用于构造一个小尺度的挂谷集合。这里展示了两种可能的方法来划分我们的三角形并重叠部分以得到一个较小的集合,第一种方法是我们只使用两个三角形,第二种方法是我们使用八个三角形。请注...

Read more

不得不爱的JavaScript语法糖


在 JavaScript 的发展历程中,语法糖的不断引入使得开发者能够以更简洁、更优雅的方式编写代码。语法糖虽不会增加语言的功能,但能显著提升代码的可读性和开发效率。

可选链操作符(?.)

可选链操作符是 JavaScript 中极为实用的语法糖。在传统 JavaScript 中,当访问对象嵌套属性时,如果中间某个对象为null或undefined,就会抛出错误。例如:

let obj = {

    a: {

        b: {

            c: 'value'

        }

    }

};

console.log(obj.a.b.c); // ...

Read more

windows微信“多开”


双开

@echo off

start /d "C:\Program Files\Tencent\WeChat" WeChat.exe

start /d "C:\Program Files\Tencent\WeChat" WeChat.exe

exit

N 开

@echo off

start /d "C:\Program Files\Tencent\WeChat" WeChat.exe

start /d "C:\Program Files\Tencent\WeChat" WeChat.exe

@ 复制 start ... 多复制几个即可
exit

Read more

浏览器为何不直接进行TypeScript兼容运行


在 Web 开发领域,TypeScript 凭借其静态类型系统和强大的工具链,成为了 JavaScript 开发者的首选语言之一。然而,尽管 TypeScript 被广泛使用,浏览器至今仍未直接支持其原生语法。这一现象背后,是技术架构、开发生态与行业实践的多重考量。

一、语言特性与浏览器引擎的本质冲突

TypeScript 是 JavaScript 的超集,它通过类型注解、接口、泛型等特性为动态语言注入了静态类型检查能力。然而,浏览器的核心 ——JavaScript 引擎(如 V8、SpiderMonkey)—— 从设计之初就是为动态执行而优化的。静态类型检查需要额外的编译时分析,这与浏...

Read more

“三进制” 是未来科技之光么?


在数字世界的底层架构中,二进制如同统治陆地的恐龙,以绝对优势占据着计算机系统的每一个角落。但在这片二进制的王国之外,三进制如同深海中的发光生物,虽不显眼却始终闪烁着独特的智慧光芒。它的故事,要从人类对计算本质的探索说起。

1958 年,莫斯科国立大学的实验室里,Setun 计算机悄然诞生。这台以三进制为核心的机器,采用了一种名为 "平衡三进制" 的特殊计数方式 —— 用 - 1、0、1 三个符号表示状态,而非传统的 0、1、2。这种设计让电路在处理加减运算时省去了二进制繁琐的进位流程:当两个 - 1 相加时,直接进位为 - 10(三进制),相当于十进制的 - 3,这种天然的对称性让复杂运...

Read more

js中的globalThis 和 window:跨环境访问全局对象


在JavaScript的世界里,访问全局对象看似简单,实则暗藏玄机。本文将带你深入探索globalThis与window的奥秘,助你写出真正跨平台的JavaScript代码!

全局对象的重要性

在JavaScript中,全局对象是程序的核心枢纽,包含了所有全局变量和函数。但问题在于:不同JavaScript运行环境的全局对象名称各不相同!

// 浏览器中
console.log(window === this); // true(在全局作用域中)

// Node.js中
console.log(global === this); // true(在模块顶层作用域中)

// Web W...

Read more