Die Funktion kann so aufgerufen werden, als ob sie sich in derselben JS-Datei befindet, solange die Datei mit der Definition der Funktion vor der ersten Verwendung der Funktion geladen wurde.
Dh
File1.js
function alertNumber(number) {
alert(number);
}
File2.js
function alertOne() {
alertNumber("one");
}
HTML
<head>
....
<script src="File1.js" type="text/javascript"></script>
<script src="File2.js" type="text/javascript"></script>
....
</head>
<body>
....
<script type="text/javascript">
alertOne();
</script>
....
</body>
Der andere Weg wird nicht funktionieren.
Wie von Stuart Wakefield richtig hervorgehoben . Der andere Weg wird auch funktionieren.
HTML
<head>
....
<script src="File2.js" type="text/javascript"></script>
<script src="File1.js" type="text/javascript"></script>
....
</head>
<body>
....
<script type="text/javascript">
alertOne();
</script>
....
</body>
Was nicht funktionieren würde, wäre:
HTML
<head>
....
<script src="File2.js" type="text/javascript"></script>
<script type="text/javascript">
alertOne();
</script>
<script src="File1.js" type="text/javascript"></script>
....
</head>
<body>
....
</body>
Obwohl alertOne
es beim Aufruf definiert wird, verwendet es intern eine Funktion, die noch nicht definiert ist ( alertNumber
).
Die obige Antwort hat eine falsche Annahme, dass die Reihenfolge der Aufnahme der Dateien von Bedeutung ist. Da die alertNumber-Funktion erst aufgerufen wird, wenn die alertOne-Funktion aufgerufen wird. Solange beide Dateien zum Zeitpunkt des Aufrufs von alertOne enthalten sind, spielt die Reihenfolge der Dateien keine Rolle:
[HTML]
[JS]
Oder es kann wie folgt bestellt werden:
[HTML]
[JS]
Aber wenn Sie dies tun würden:
[HTML]
[JS]
Es ist nur wichtig, welche Variablen und Funktionen zum Zeitpunkt der Ausführung verfügbar sind. Wenn eine Funktion definiert ist, führt sie keine der darin deklarierten Variablen aus oder löst sie auf, bis diese Funktion anschließend aufgerufen wird.
Das Einfügen verschiedener Skriptdateien unterscheidet sich nicht von dem Skript in dieser Reihenfolge in derselben Datei, mit Ausnahme von verzögerten Skripten:
dann musst du vorsichtig sein.
quelle
function myfunction() {
und script2:alert();}
Es wird nicht funktionieren. Es stört mich, weil ich versucht habe, eine zu lange JS-Datei zu modularisieren. Siehe stackoverflow.com/questions/20311604/…this
Kontext gemeinsam nutzen, wenn sich eine der Funktionen in einer Klasse befindet?this
wird an dem Punkt gebunden, an dem die Funktion aufgerufen wird (esbind
sei denn, sie wird zuvor aufgerufen). Die beiden Funktionen in zwei separaten Dateien teilen denthis
Kontext nicht automatisch, im obigen Beispiel haben sie auch keinenthis
Kontext, dhwindow
im nicht strengen oderundefined
im strengen Modus. Sie können festlegen, dass die Funktion im anderen Skript denselbenthis
Wert aufweist, indem Sie die Funktion entweder als Mitglied des Objekts (dh innerhalb des Konstruktorsthis.method = myOtherFunc
) zuweisen oder bind verwenden. Bitte posten Sie eine SO-Frage mit mehr Details, wenn Sie eine ausführlichere Antwort benötigen. Prost, StuartSolange beide von der Webseite referenziert werden, ja.
Sie rufen die Funktionen einfach so auf, als ob sie sich in derselben JS-Datei befinden.
quelle
Wenn alle Dateien enthalten sind, können Sie Eigenschaften von einer Datei zur anderen aufrufen (wie Funktion, Variable, Objekt usw.).
Die js-Funktionen und -Variablen, die Sie in eine .js-Datei schreiben - sagen wir , a.js steht anderen js-Dateien zur Verfügung - sagen wir b.js , solange sowohl a.js als auch b.js mit dem folgenden Include in der Datei enthalten sind Mechanismus (und in derselben Reihenfolge, wenn die Funktion in b.js die in a.js aufruft).
quelle
ES6: Anstatt viele js-Dateien
<script>
in .html einzuschließen, können Sie nur eine Hauptdatei einschließen, z. B.script.js
Attributtype="module"
( Unterstützung ), undscript.js
Sie können andere Dateien einschließen:Und in
script.js
Datei enthalten eine andere Datei wie folgt aus:In 'module.js' müssen Sie die zu importierende Funktion / Klasse exportieren
Arbeitsbeispiel hier .
quelle
Ja, du kannst . Sie müssen beide
JS file
auf die.aspx
Seite verweisenquelle
Sie können die in einer anderen JS-Datei erstellte Funktion aus der Datei aufrufen, in der Sie arbeiten. Dazu müssen Sie zunächst die externe JS-Datei in das HTML-Dokument einfügen.
Die in der externen Javascript-Datei definierte Funktion -
Um diese Funktion in Ihrer aktuellen Datei aufzurufen, rufen Sie die Funktion einfach als - auf
Wenn Sie die Parameter an die Funktion übergeben möchten, definieren Sie die Funktion als
Rufen Sie diese Funktion in Ihrer aktuellen Datei als - auf.
quelle
$.fn
ist es sinnlos , die Aufgabe in eine Dokumentbereitschaftsklausel zuHier ist ein aussagekräftigeres Beispiel mit einem angehängten CodePen-Snippet:
1.js
2.js
index.html
Ausgabe
Versuchen Sie dieses CodePen-Snippet: Link .
quelle
Nun, ich bin auf eine andere süße Lösung gestoßen.
window['functioName'](params);
quelle
Für diejenigen, die dies in Node.js tun möchten (Skripte auf der Serverseite ausführen), ist eine andere Option,
require
und zu verwendenmodule.exports
. Hier ist ein kurzes Beispiel, wie Sie ein Modul erstellen und zur Verwendung an anderer Stelle exportieren:file1.js
file2.js
quelle