10 JavaScript Tips 🎈for Senior Front-end Programmers

持续更新中,欢迎收藏......

1. 如何巧妙替换部分 query

比如想将 q 改成 '你好 world'

http://prophetes.ai/c?q=Who+is+on+the+new+initial+board+of+OpenAI%3F&source=hot

输出

prophetes.ai/c?q=%E4%BD%...

其中 q = encodeURIComponent('你好 world')

这样一个看起来简单的需求有几个注意点:

  1. 其他 query 需要不受影响的保留
  2. 需要对新的 query encode(比较容易忘记)。

一般的做法使用正则表达式精确替换不就可以了么?这里提供一个巧妙的办法:

js 复制代码
function updateQuery(newQuery) {
    const params = new URLSearchParams(location.search);

    params.set('q', newQuery);

    return params.toString();
  }

既能精准替换又能自动 encode 🎉!

2. 如何获取 HTML 标签内的所有文字(仅文字,嵌套的标签无需)

  • 输入 <ul>你好<li><strong>hello world</li></strong>世界</ul>
  • 输出 你好hello world世界

如果使用正则表达式很麻烦且易出错(brittle)。如果是浏览器环境有一种取巧方式,几行代码搞定,而且可读性很好:

js 复制代码
/**
 * @param {string} html
 */
function extractText(html) {
  const div = document.createElement('div');
  
  div.innerHTML = html;
  
  return div.textContent;
}
相关推荐
雪芽蓝域zzs5 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js
默_笙8 小时前
🚲 从写信到打电话:WebSocket 双工通信与跨域方案的"通信进化史"
前端·javascript
ikoala9 小时前
DeepSeek 官方仓库惊现 DeepSeek Harness 桌面端!
前端·javascript·后端
liangshanbo12159 小时前
React useEffect 与 useLayoutEffect 面试题整理
前端·javascript·react.js
ID346107442010 小时前
【课程设计】基于Spring Boot+Vue的校园共享无人机服务系统设计与实现-计算机毕设 附源码44219
javascript·vue.js·spring boot·python·node.js·php·课程设计
夜不会漫长10 小时前
C++:类和对象(2)
java·javascript·c++
BillKu10 小时前
Vue3 可拖拽分栏布局:两种实现方式详解
javascript·vue.js·ecmascript
雪芽蓝域zzs11 小时前
第三十七节:防抖、节流封装(composables 通用函数,搜索框防重复请求)
前端·javascript·vue.js
十年一梦惊觉醒11 小时前
快手视频发布助手,全自动视频发布带货工具
开发语言·前端·javascript
超人气王12 小时前
细说agent心跳机制--agentLoop循环机制中死循环处理,带你进一步了解agent工作底层原理
javascript·人工智能