2013-05-20 94 views
0

我修改了以前遇到問題的代碼,修復了所有錯誤並在不同的「lint」站點上多次檢查。 只是爲了確保代碼在Jsfiddle中工作,我點擊了JShint,並被告知所有代碼都是有效的,但是,當我單擊按鈕時不會運行。 示例代碼來創建鏈接:Jsfiddle代碼有效,但不會運行

(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/

+1

的中控臺的答案:「遺漏的類型錯誤:無法設置屬性‘zork_clone’未定義」 – elclanrs

回答

0

試圖上的jsfiddle運行這個當我看到在控制檯中的錯誤是:遺漏的類型錯誤:無法設置屬性「zork_clone」的未定義。

字符串'zork_clone'只存在於代碼中的兩個地方;在第95行執行的函數名,並傳遞給你的模塊上線92

跟蹤該參數中,我們看到第2行拋出的錯誤字符串:這告訴我g = this[g] = function() {this是不確定時碼執行。

我相信在你的情況下,this是未定義的,因爲你在「自動執行匿名函數」的範圍內執行,而不是使用關鍵字new聲明的對象。

0

有兩個問題,我可以在頁面中看到

onload事件問題
你的小提琴腳本設置執行onload事件後,再次在您的腳本您註冊另一onload處理。
要解決這在小提琴的左側面板Frameworks & Extensions下的第二選擇區域選擇No Wrap - in <body>

匿名函數問題
從我能理解你正在試圖創建變量名的功能(在這種情況在全球範圍內(即在window中)以名稱zork_clone)起作用。但是您在內部函數中使用strict模式。這裏你需要的是this指向window對象,這是正常情況下,如果你不使用strict模式,這改變了strict模式。在嚴格模式下,您可以find herethis必須是明確的,否則它的值將爲undefined,這就是您的情況。
修復程序將使用window全局變量,而不是在匿名函數中使用this

演示:Fiddle

相關問題