QUnit: Function "ist nicht definiert"
Ich versuche, einen einfachen test mit QUnit, aber für einige Grund es nicht lokalisieren, meine Funktion. Mache ich etwas grundlegend falsch???
test.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<script type="text/javascript" src="qunit-git.js"></script>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript" src="code.js"></script>
<script type="text/javascript" src="test.js"></script>
<link rel="stylesheet" type="text/css" href="qunit-git.css" media="screen"/>
</head>
<body>
<h1 id="qunit-header">QUnit Test Suite</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
</body>
</html>
test.js
test('Blah blah', function() {
ok(mytest(), 'foo bar'
);
});
code.js
$(document).ready(function() {
var mytest = function() {
return true;
}
});
--> "Starb auf test #1: mytest ist nicht definiert..."
Du musst angemeldet sein, um einen Kommentar abzugeben.
mytest()
deklariert ist innerhalb derready()
Funktion, und damit hat die Funktion, Umfang. Es ist daher nicht außerhalb derready
Funktion. Ihr test meint, es hat globalen Geltungsbereich.Variablen und Funktionen deklariert, im block "scope" sind 'gehisst' an die Spitze der nächsten Funktion Bereich oder globalen Umfang, wenn nicht in einer Funktion deklariert wurde.
BEARBEITEN
Letztlich, würde ich sagen, der code strukturiert ist falsch. Die bereit-Funktion ist für die Ausführung der Dinge, die müssen nur ausgeführt werden, wenn das Dokument bereit ist.
Denken in Bezug auf eine stärker typisierte Sprache. Würden Sie den Umfang einer Funktion in einem
Page.Load()
oderWindow.Load()
oderApplication.Init()
. Nein, Sie erklären würde, es auf Klassen-Ebene und Zugang es so.Denken Sie an Ihren JavaScript-code in dieser Art und Weise. Wenn Sie möchten, verringern Sie Ihren Umfang, deklarieren Sie Sie innerhalb einer anderen Klasse.