前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript 加密混淆之后运行 xxxx is not defined

JavaScript 加密混淆之后运行 xxxx is not defined

作者头像
用户6256742
发布2024-07-09 09:30:57
840
发布2024-07-09 09:30:57
举报
文章被收录于专栏:网络日志

0x0、xxxx is not defined 错误原因及解决方法

首先提示 xxxx is not defined 就是表示未定义。

发生原因:

如果你确定加密之前已经定义了这个“变量名”或者“方法名”,那应该是加密后“变量名/方法名”已经发生改变,导致外部调用的时候找不到这个“方法名/变量名”,才会出错误。

如原来函数(方法)为:

代码语言:javascript
复制
function test(){
  //todo 
}

加密后函数(方法)可能为:

代码语言:javascript
复制
function _0xaoem(){
  //todo 
}

这个时候你去调用 “test” 那肯定是未定义(test is not defined)。解决办法:1.采用 最牛加密V6版本 ,保留 “变量名/方法名” 方法。

 JavaScript 加密混淆之后运行 xxxx is not defined
JavaScript 加密混淆之后运行 xxxx is not defined

如方法名或者变量名为 “test” ,那就这么添加即可。更多规则请点击对应后面的“?”符号可以看到具体的规则。这样加密后,这个“变量名/方法名”不会发生改变。就不会出现这个错误问题。2.提升作用域。原来函数书写:

代码语言:javascript
复制
function test(){
  //todo 
}

改成:

代码语言:javascript
复制
test = function(){
  //todo 
}
// or 
window.test = function(){
  //todo 
}

这样随便怎么加密,这个 test 方法会一直存在,并且调用不会出现test is not defined。

3.正确的书写(采用闭包)

我们都见过jquery,jquery就是采用闭包的方式书写。

简单来讲就是私有化所有方法(函数)和变量,然后提供公共访问方式。

我们打个样:

代码语言:javascript
复制
(function(w) {
    //定义私有化对象
    var T = {};
    //绑定方法
    T.test = function(){
        //todo 
    }

    //提供公共访问方式
    w.T = T;

})(window);




//调用test

T.test();

这样随便怎么加密,您后面都可以使用 T 来调用绑定在T上面的方法(函数)及变量。

结语:

其实当我们在写代码的时候就要考虑到这些,方便后面自己调用或者其他人的使用。所以从开始就要规划怎么写合适。而不是上来就干,谁都不爽。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档