分类目录归档:逻辑猎人

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

不得不爱的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

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