回答:
関数を最初に使用する前に、関数の定義を含むファイルがロードされている限り、関数は同じJSファイルにあるかのように呼び出すことができます。
すなわち
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>
他の方法は機能しません。スチュアートウェイクフィールド
によって正しく指摘されたように。他の方法も機能します。
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>
機能しないのは次のとおりです。
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>
けれどもalertOne
、それを呼び出すときに定義され、内部的には、(まだ定義されていない機能を使用していますalertNumber
)。
上記の答えには、ファイルを含める順序が重要であるという誤った仮定があります。alertOne関数が呼び出されるまで、alertNumber関数は呼び出されません。時間によって両方のファイルが含まれている限り、alertOneが呼び出され、ファイルの順序は重要ではありません。
[HTML]
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
alertOne( );
</script>
[JS]
// File1.js
function alertNumber( n ) {
alert( n );
};
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// Inline
alertOne( ); // No errors
または、次のように注文できます。
[HTML]
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript" src="file1.js"></script>
<script type="text/javascript">
alertOne( );
</script>
[JS]
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// File1.js
function alertNumber( n ) {
alert( n );
};
// Inline
alertOne( ); // No errors
しかし、これを行うとしたら:
[HTML]
<script type="text/javascript" src="file2.js"></script>
<script type="text/javascript">
alertOne( );
</script>
<script type="text/javascript" src="file1.js"></script>
[JS]
// File2.js
function alertOne( ) {
alertNumber( "one" );
};
// Inline
alertOne( ); // Error: alertNumber is not defined
// File1.js
function alertNumber( n ) {
alert( n );
};
実行時に利用できる変数と関数についてのみ重要です。関数が定義されると、その後その関数が呼び出されるまで、その中で宣言された変数は実行または解決されません。
異なるスクリプトファイルを含めることは、遅延スクリプトを除いて、同じファイル内にこの順序で配置されているスクリプトと同じです。
<script type="text/javascript" src="myscript.js" defer="defer"></script>
その後、注意する必要があります。
function myfunction() {
とscript2を考えてみalert();}
ます。これは機能しません。長すぎるjsファイルをモジュール化しようとしていたので、それは私を困らせます。stackoverflow.com/questions/20311604/…を
this
1つがクラス内にある場合、この関数はコンテキストを共有しますか?
this
関数が呼び出された時点でバインドされます(bind
事前に呼び出されない限り)。2つの別個のファイル内の2つの関数は、this
コンテキストを自動的に共有しません。上記の例では、this
コンテキストはありません。つまりwindow
、非undefined
厳密モードまたは厳密モードです。他のスクリプトthis
の関数は、オブジェクトのメンバーとして(つまり、コンストラクター内でthis.method = myOtherFunc
)関数を割り当てるか、バインドを使用して、同じ値を共有できます。より詳細な回答が必要な場合は、SOの質問をより詳細に投稿してください。乾杯、スチュアート
すべてのファイルが含まれている場合は、からプロパティを呼び出すことができる別のファイル(機能のように、変数、オブジェクトなど)
あなたは1 .jsファイルに書き込むことjsの関数と変数は-と言うa.jsが言うの- JSファイル他に利用できるようになりますb.js長期の両方としてとしてa.jsとb.jsが含まれ、以下を使用して、ファイルに含まれていますメカニズム(b.jsの関数がa.jsの関数を呼び出す場合と同じ順序)。
<script language="javascript" src="a.js"> and
<script language="javascript" src="b.js">
ES6:<script>
.htmlを使用して多くのjsファイルを含める代わりに、script.js
属性type="module"
(support)を使用してメインファイルを1つだけscript.js
含めることができ、内部には他のファイルを含めることができます。
<script type="module" src="script.js"></script>
そしてscript.js
ファイルにそのような別のファイルを含めます:
import { hello } from './module.js';
...
// alert(hello());
「module.js」では、インポートする関数/クラスをエクスポートする必要があります
export function hello() {
return "Hello World";
}
はい、できます。あなたは両方JS file
の.aspx
ページを参照する必要があります
<script language="javascript" type="text/javascript" src="JScript1.js">
</script>
<script language="javascript" type="text/javascript" src="JScript2.js">
</script>
JScript1.js
function ani1() {
alert("1");
ani2();
}
JScript2.js
function ani2() {
alert("2");
}
作業中のファイルから別のjsファイルで作成された関数を呼び出すことができます。そのため、最初に外部jsファイルをhtmlドキュメントに追加する必要があります。
<html>
<head>
<script type="text/javascript" src='path/to/external/js'></script>
</head>
<body>
........
外部JavaScriptファイルで定義された関数-
$.fn.yourFunctionName = function(){
alert('function called succesfully for - ' + $(this).html() );
}
現在のファイルでこの関数を呼び出すには、次のように関数を呼び出します-
......
<script type="text/javascript">
$(function(){
$('#element').yourFunctionName();
});
</script>
関数にパラメーターを渡す場合は、関数を次のように定義します。
$.fn.functionWithParameters = function(parameter1, parameter2){
alert('Parameters passed are - ' + parameter1 + ' , ' + parameter2);
}
そして、現在のファイルでこの関数を次のように呼び出します-
$('#element').functionWithParameters('some parameter', 'another parameter');
$.fn
ドキュメントの準備ができた句で割り当てをラップしても意味がありません
以下は、CodePenスニペットが添付されたよりわかりやすい例です。
1.js
function fn1() {
document.getElementById("result").innerHTML += "fn1 gets called";
}
2.js
function clickedTheButton() {
fn1();
}
index.html
<html>
<head>
</head>
<body>
<button onclick="clickedTheButton()">Click me</button>
<script type="text/javascript" src="1.js"></script>
<script type="text/javascript" src="2.js"></script>
</body>
</html>
出力
このCodePenスニペットを試してください:リンク。