JavaScript代码解压缩求助:无法正确还原压缩代码
代码解压缩检查与修正
原压缩代码逻辑分析
先拆解压缩代码的核心逻辑:
r.match("example.com") && (r.match("=") ? (parts = r.split("="), r = parts[1] && "" != parts[1].trim() ? parts[0] + "=w100-h100" : r) : r += "=w120-h120");
这是利用JS的短路求值和三元运算符实现的条件逻辑,等价于带条件分支的结构化代码。
你还原代码的问题
你的还原代码存在3处关键错误:
- 错误1:错误地将
r = parts[1]单独提取,破坏了原三元表达式的赋值逻辑,原代码中r的赋值是整个三元运算的结果,而非直接等于parts[1] - 错误2:无中生有添加了
-p-k-no-nu后缀,原压缩代码中并没有这段内容 - 错误3:分支中的表达式未赋值给
r,原代码中三元运算的结果是要赋值回r的,你只是写了表达式但没完成赋值
正确的解压缩代码
if (r.match("example.com")) { if (r.match("=")) { const parts = r.split("="); // 判断parts[1]存在且去除首尾空格后不为空 if (parts[1] && parts[1].trim() !== "") { r = parts[0] + "=w100-h100"; } // 否则r保持原值,无需额外处理 } else { r += "=w120-h120"; } }
逻辑说明
- 首先判断字符串
r是否包含example.com,不包含则直接跳过所有逻辑 - 如果包含
example.com,再判断r中是否有=符号:- 有
=时,将r按=分割为数组parts,若parts[1]存在且去除首尾空格后不为空,就把r重写为parts[0] + =w100-h100;否则r保持不变 - 没有
=时,直接给r追加=w120-h120
- 有
内容的提问来源于stack exchange,提问作者Nirob Saju
相关产品推荐
相关产品推荐

