一段js代码但是是字符串,怎么执行呀?

比如说我有下面的一段js代码

function switchViewFunc(){
    return function(param){
        if (param === "back") {
            appGoBackPage();
        }
    }
}

我使用sessionStorage把它存在了内容中。在需要的时候把它读取出来,他变成了一段字符串。

看执行截图:
图片描述

请问上图中aaa的值我怎么把它转化为js代码执行呢?

阅读 7.9k
8 个回答

保存时把外层的声明去掉,或者取出来时去掉,不知你的应用场景如何,但这个应该不难。
保存成这样

aaa = 'return function(param){
        if (param === "back") {
            appGoBackPage();
        }
    }'

然后

var switchViewFunc = new Function(aaa)
switchViewFunc()

首先,你这是一种非常危险的行为。eval()方法在新的JS标准中,已经变成了废弃的方法。看不懂你为什么会有这种需求。

新手上路,请多包涵

eval()应该可以吧!

这需求没见过,不过也不是没办法;
楼上说的eval()可以,还有一种就是创建一个script标签
var aa="function aa(){alert('aa')}";
var bb=document.createElement("script")
bb.innerHTML=aa;
document.body.appendChild(bb);
aa();
这段代码是可以执行的,但就是觉得有点奇怪,我也需要大神指点啊。。

用 (new Function("..."))

应该存一些参数什么的吧,存代码,这做法不大好吧。。

问题都是错的,什么目的让你这么干?

很奇怪的需求,直接把代码保存成文件不就好了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题