Jsfiddle代码是有效的,但不会运行
Jsfiddle code is valid, but will not run
我修改了之前有问题的代码,修复了所有的错误,并在不同的"lint"站点上多次检查。只是为了确保代码在JShint中工作,我单击了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/
当尝试在jsFiddle上运行此命令时,我在控制台中看到的错误是:Uncaught TypeError: Cannot set property 'zork_clone' of undefined
字符串'zork_clone'只存在于代码中的两个地方;函数名在第95行执行,字符串在第92行传入模块。
跟踪该参数,我们看到从第2行抛出的错误:g = this[g] = function () {
,它告诉我在执行该代码时this
是未定义的。
我相信在你的情况下,this
是未定义的,因为你是在一个"自执行匿名函数"的范围内执行,而不是使用new
关键字声明的对象。
我可以在页面中看到两个问题
onload事件问题
您的fiddle脚本设置为在onload事件后执行,但在您的脚本中,您又注册了另一个onload处理程序。
要修复这个问题,请在左面板的Frameworks & Extensions
下的第二个选择字段中选择No Wrap - in <body>
匿名函数问题
从我所能理解的是,你正试图在全局范围内(即window
)创建一个具有变量名称的函数(在这种情况下,函数名称为zork_clone
)。但是您在内部函数中使用strict
模式。这里你需要的是this
指向window
对象,这是正常情况,如果你不使用strict
模式,这在strict
模式下改变。正如您在严格模式下可以发现的那样,this
必须是显式的,否则它将具有值undefined
,这就是在您的情况下发生的情况。
修复是使用window
全局变量而不是在匿名函数中使用this
。
演示:小提琴
- AJAX调用运行C代码的最佳实践
- 在经过一段时间或满足条件后运行代码
- 在Firefox restartless插件中,当一个新窗口打开时,我如何运行代码(监听窗口打开)
- 如果调试器关闭,Internet Explorer将出现运行代码问题
- JQuery 帖子未在 PHP 文件中运行代码
- 当ajax请求发生时运行代码的Chrome扩展
- 当我运行代码时,我得到以下结果 []对象对象] [对象对象],但应该给我一个有序数组
- 仅当客户端连接到Meteor服务器时才运行代码
- 在.each()循环中的ajax完成后,Jquery运行代码
- node.js和Cygein,我该如何运行代码
- 未访问全局变量,未运行代码
- Meteor - 在客户端上的异步回调的 for 循环后运行代码
- 运行代码以在Android应用程序中单击javascript按钮?尝试在页面上抓取回复按钮联系信息 craigslist
- 函数结束时如何运行代码
- JS 在不满足条件时在 if 语句中运行代码段
- 在 Ember 视图参数更改上运行代码
- 如何在 YUI 模块中运行代码
- 如何在未在 iframe 中定义的 iFrame 中运行代码
- 在后台运行代码,同时显示警报
- 加载页面时运行代码