编程过程中,难免会产生一些无效的、冗长的长码
JavaScript奇淫技巧:清理无效的垃圾代码
在编程过程中,难免会产生一些无效的、冗长的长码。
很常见的是:定义了某些变量,但未使用,或者是曾使用过,但在修改代码后不再使用。那么,它就成了无用的垃圾代码,而它占用着代码空间,使代码庞大、影响代码阅读。
在较大的工程中,往往有不少这种代码。
本文,演示一种方法,自动化地去除无效的变量。
例程:
添加图片注释,不超过 140 字(可选)
以上代码中,变量b是无用的。
通过编程,实现去除js中remove方法,完整代码如下:
添加图片注释,不超过 140 字(可选)
其原理是:将代码转化为AST(抽象语法树),从语法树中遍历变量定义,然后检测变量是否被引用或修改,如果变量既未引用、也未被修改过。则删除该变量。最后,再把AST重新生成为JS代码。
这段代码在NodeJS环境中使用,运行效果:
添加图片注释,不超过 140 字(可选)
从运行效果可以看到,删除了未使用的变量b,并重新生成了代码。
这个操作,可以精简、优化JS代码。
与这波操作相反的,有时,为了保护JS代码,防止代码被分析、复制、盗用;防止他人理解代码;或因小游戏过审等需要,而对JS代码进行混淆加密。
在JS代码混淆加密时,经常会有“僵尸代码植入操作”,会插入一些无用的变量和函数等,比如JShaman就具有这项功能。下面,再测试一下,用JShaman插入的JS代码,是否能用这种方式去除。
例程如下:
添加图片注释,不超过 140 字(可选)
在配置中,只选择“僵尸代码植入”。JShaman有很多JS加密选项,本文只测试是否能去除插入的JS代码,所以,只启用这一项:
添加图片注释,不超过 140 字(可选)
用JShaman混淆加密后,得到代码:
添加图片注释,不超过 140 字(可选)
代码中的红色标识处,都是随机插入的僵尸代码。
把这段代码,放到刚刚的程序中,并运行:
添加图片注释,不超过 140 字(可选)
从运行结果看,并未能去除被JShaman插入的僵尸代码,原因是因为僵尸变量也有引用和修改。
本文仅演示了无效变量的去除,同理js中remove方法,还可以用类似的方法去除无效的函数。
最后,附上本文使用的代码:
//自动去除无效变量
//Auther: JShaman.com w2sft
var parser = require("@babel/parser");
var traverse = require("@babel/traverse").default;
var generator = require("@babel/generator").default;
var jscode = `
发表评论
热门文章
Spimes主题专为博客、自媒体、资讯类的网站设计....
一款个人简历主题,可以简单搭建一下,具体也比较简单....
仿制主题,Typecho博客主题,昼夜双版设计,可....
用于作品展示、资源下载,行业垂直性网站、个人博客,....
尘集杂货铺和官网1t5-cn
11月11日
[已回复]
希望主题和播放器能支持SQLite数据库,AI能多个讯飞星火