Jsfiddle代码有效,但不会运行

时间:2013-05-20 02:08:02

标签: javascript jsfiddle

我修改了之前遇到问题的代码,修复了所有错误,并在不同的“lint”网站上多次检查。 为了确保代码在Jsfiddle中运行,我点击了JShint并被告知所有都是有效的,但是,当我单击按钮时,它不会运行。 用于创建链接的示例代码:

    (function (g) { "use strict"; //g = game
g = this[g] = function () {
    var answer;
    //pre game
    answer = prompt(g.msg[0]); //instruction prompt asks if youve played game
    if (answer === 'no') {
等等 http://jsfiddle.net/ShiiFtyyMendoza/NsVvU/12/

2 个答案:

答案 0 :(得分:0)

我在jsFiddle上尝试运行时在控制台中看到的错误是:Uncaught TypeError:无法设置未定义的属性'zork_clone'。

字符串'zork_clone'仅存在于代码中的两个位置;在第95行执行的函数名称,以及在第92行传入模块的字符串。

跟踪该参数,我们看到从第2行抛出的错误:g = this[g] = function () {,它告诉我在执行该代码时未定义this

我认为在你的情况下this是未定义的,因为你是在'自执行匿名函数'的范围内执行而不是使用new关键字声明的对象。

答案 1 :(得分:0)

我可以在页面中看到两个问题

onload事件问题
您的小提琴脚本设置为在onload事件之后执行,而在您的脚本中您再次注册另一个onload处理程序 要修复,请在第二个选择字段{@ 1}}下的小提琴的左侧面板中选择Frameworks & Extensions

匿名功能问题
根据我的理解,您正在尝试在全局范围内(即No Wrap - in <body>)创建一个具有变量名称的函数(在本例中为名称为zork_clone的函数)。但是你在内部函数中使用window模式。您所需要的是strict指向this对象,如果您没有使用window模式,这是正常情况,这会在strict模式中发生变化。您可以find here在严格模式下strict必须明确,否则它将具有值this,这是您案例中发生的事情。
修复是使用undefined全局变量,而不是在匿名函数中使用window

演示:Fiddle