Javascript JSFIDLE代码有效,但不会运行
我修改了以前遇到问题的代码,修复了所有错误,并在不同的“lint”站点上多次检查。 为了确保代码在JSFIDLE中工作,我单击了JShint,并被告知所有内容都是有效的,但是,当我单击按钮执行此操作时,将不会运行所有内容。 创建链接的示例代码:Javascript JSFIDLE代码有效,但不会运行,javascript,jsfiddle,Javascript,Jsfiddle,我修改了以前遇到问题的代码,修复了所有错误,并在不同的“lint”站点上多次检查。 为了确保代码在JSFIDLE中工作,我单击了JShint,并被告知所有内容都是有效的,但是,当我单击按钮执行此操作时,将不会运行所有内容。 创建链接的示例代码: (function (g) { "use strict"; //g = game g = this[g] = function () { var answer; //pre game answer = prompt(g.m
(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') {
等等。
在JSFIDLE上尝试运行此操作时,我在控制台中看到的错误是:Uncaught TypeError:无法设置未定义的属性“zork_clone” 字符串“zork_clone”在代码中仅存在于两个位置;第95行中执行的函数名,以及第92行中传递给模块的字符串 在中跟踪该参数,我们看到从第2行抛出的错误:
g=this[g]=function(){
,它告诉我执行该代码时,this
未定义
我相信在您的情况下,
这个
是未定义的,因为您是在“自动执行匿名函数”的范围内执行的,而不是在使用new
关键字声明的对象范围内执行的。我可以在页面中看到两个问题
加载事件问题您的fiddle脚本设置为在onload事件之后执行,但在您的脚本中,您再次注册了另一个onload处理程序。
要解决此问题,请在小提琴左面板的
Frameworks&Extensions
下的第二个选择字段中选择No Wrap-in
匿名函数问题据我所知,您正试图在全局范围内(即在
窗口中
)创建一个具有变量名的函数(在本例中,函数名为zork_clone
)但是你在内部函数中使用了strict
模式。这里你需要的是this
指向窗口
对象,这是正常情况,如果你没有使用strict
模式,这会在strict
模式中发生变化。在strict模式下此
必须是显式的,否则t的值未定义
,这就是您的情况。修复方法是在匿名函数中使用
窗口
全局变量,而不是使用此
演示:控制台的答案是:“未捕获类型错误:无法设置未定义的属性‘zork_clone’”