js 奇葩技巧之隐藏代码
发布时间 - 2026-01-11 02:44:53 点击率:次昨天在群看到有人发了个文章叫《“短”化你的代码》,思路非常不错,采用unicode的零宽字符来实现字符隐藏,虽然有字符,可是你却看不见它。
这篇文章详细的介绍了这种方法的实现原理,最后还给出了一个生成工具。

当然,作者算了留了一个小小的练习给我们,因为他只用了两个字符,导致转换后的数据是原始数据的 8倍。
他给我们提供了4个零宽字符,我们就可以缩小至4倍。
好了,我们来看下代码吧。
(function(window) {
var rep = { // 替换用的数据,使用了4个零宽字符,数据量减少了一半。
'00': '\u200b',
'01': '\u200c',
'10': '\u200d',
'11': '\uFEFF'
};
function hide(str) {
str = str.replace(/[^\x00-\xff]/g, function(a) { // 转码 Latin-1 编码以外的字符。
return escape(a).replace('%', '\\');
});
str = str.replace(/[\s\S]/g, function(a) { // 处理二进制数据并且进行数据替换
a = a.charCodeAt().toString(2);
a = a.length < 8 ? Array(9 - a.length).join('0') + a : a;
return a.replace(/../g, function(a) {
return rep[a];
});
});
return str;
}
var tpl = '("@code".replace(/.{4}/g,function(a){var rep={"\u200b":"00","\u200c":"01","\u200d":"10","\uFEFF":"11"};return String.fromCharCode(parseInt(a.replace(/./g, function(a) {return rep[a]}),2))}))';
window.hider = function(code, type) {
var str = hide(code); // 生成零宽字符串
str = tpl.replace('@code', str); // 生成模版
if (type === 'eval') {
str = 'eval' + str;
} else {
str = 'Function' + str + '()';
}
return str;
}
})(window);
大家可以通过最简单的代码例子进行测试一下,看看效果如何,也可以进一步优化,或者写成插件什么的,就当练习吧。。
虽然这个东西没什么实际用处,不过有时候玩玩还是不错的,可出面试题吓唬新人哦。。
以上就是小编为大家整理的js 奇葩技巧之隐藏代码,希望对大家有所帮助!
# js
# 技巧
# 隐藏代码
# javascript中一些奇葩的日期换算方法总结
# JavaScript数组的一些奇葩行为
# 一个奇葩的最短的 IE 版本判断JS脚本
# JavaScript中一个奇葩的IE浏览器判断方法
# JavaScript中奇葩的假值示例应用
# Javascript中的奇葩知识
# 你知道吗?
# 好了
# 出了
# 给我们
# 可以通过
# 发了
# 这篇文章
# 最简单
# 来实现
# 就当
# 你却
# 他给
# 留了
# 一个小小
# 小编
# 非常不错
# 就可以
# 测试一下
# 没什么
# 昨天
# 原始数据
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
jQuery中的100个技巧汇总
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
如何用VPS主机快速搭建个人网站?
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
如何在宝塔面板创建新站点?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
如何实现建站之星域名转发设置?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
LinuxCD持续部署教程_自动发布与回滚机制
在线教育网站制作平台,山西立德教育官网?
详解阿里云nginx服务器多站点的配置
如何快速建站并高效导出源代码?
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
如何快速查询网址的建站时间与历史轨迹?
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
详解Android中Activity的四大启动模式实验简述
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
大学网站设计制作软件有哪些,如何将网站制作成自己app?
深圳网站制作平台,深圳市做网站好的公司有哪些?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Bootstrap CSS布局之列表
ChatGPT 4.0官网入口地址 ChatGPT在线体验官网
独立制作一个网站多少钱,建立网站需要花多少钱?
Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
Laravel如何配置Horizon来管理队列?(安装和使用)
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
黑客如何利用漏洞与弱口令入侵网站服务器?
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
Laravel如何优化应用性能?(缓存和优化命令)
详解jQuery停止动画——stop()方法的使用
jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
在centOS 7安装mysql 5.7的详细教程
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
EditPlus中的正则表达式 实战(4)
如何在腾讯云服务器快速搭建个人网站?
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
PythonWeb开发入门教程_Flask快速构建Web应用
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
javascript中闭包概念与用法深入理解
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
潮流网站制作头像软件下载,适合母子的网名有哪些?

