0
 $(".app-launch").on("click", function () {
    var appId = this.id;

    // Check if Function is running.
    if (typeof eval('$' + appId).start == 'undefined') {
         eval('$' + appId).start();
     }
 }

eval 只是导致它返回并说 $XXXXXX 未定义并终止 java-script 执行。有没有办法阻止它杀死执行并继续?这个函数要么启动应用程序,要么先加载 javascript,然后再启动应用程序,所以这个检查是为了确定 javascript 是否已经加载。

4

3 回答 3

1

首先,停止使用eval. 如果您想要动态命名变量,请使用对象。

start然后,您可以在尝试访问其属性之前测试对象的类型。

var objects = {};
var appId = "thing";

objects[appId] = { start: foo; }

if (
    typeof objects[appId] !== 'undefined' &&
    typeof objects[appId].start === 'function'
   ) {
    objects[appId]();
}
于 2012-10-14T11:13:01.790 回答
1

尝试这个

eval('$("' + appId + '"')
于 2012-10-14T11:28:07.343 回答
0

如果您尝试检索全局变量,只需使用关联数组语法window['$'+appId]

此外,您的代码中断的原因是因为您正在检查是否定义了 start 方法,而 $XXXXXX 不存在。在引用该方法之前检查 $XXXXXX 是否存在。此外,如果未定义该方法,您将调用该方法,这是没有意义的。

也评价。

这是一个jsfiddle,显示出了什么问题。这是一个固定版本

于 2012-10-14T11:15:27.467 回答