답변:
함수 정의를 포함하는 파일이 함수를 처음 사용하기 전에로드 된 경우 동일한 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
).
위의 답변에는 파일 포함 순서가 중요하다는 잘못된 가정이 있습니다. alertNumber 함수는 alertOne 함수가 호출 될 때까지 호출되지 않습니다. 두 파일이 시간별로 포함되어있는 한 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
중 하나가 클래스에있는 경우이 함수가 컨텍스트를 공유 합니까?
this
함수가 호출되는 지점에 bind
미리 바인딩되어 있습니다 ( 사전 호출 되지 않는 한 ). 두 개의 개별 파일에있는 두 함수는 this
컨텍스트를 자동으로 공유하지 않습니다 . 위의 예 에서는 컨텍스트 가 없습니다 ( this
예 : window
엄격하지 않은 undefined
모드 또는 엄격 모드). this
함수를 객체의 멤버로 (즉 생성자 내에서 this.method = myOtherFunc
) 할당 하거나 바인드를 사용하여 다른 스크립트의 함수가 동일한 값을 공유하도록 할 수 있습니다. 더 자세한 답변이 필요하면 SO 질문을 더 자세히 게시하십시오. 건배, 스튜어트
모든 파일이 포함 된 경우 한 파일에서 다른 파일로 속성 (예 : 함수, 변수, 객체 등)을 호출 할 수 있습니다 .
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 )을 사용하여 하나의 기본 파일 만 포함 할 수 있으며 내부 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>
........
외부 자바 스크립트 파일에 정의 된 함수-
$.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 코드 조각을 사용해보십시오 : link .
Node.js (서버 측에서 스크립트 실행) 에서이 작업을 수행하려는 사람들은 또 다른 옵션을 사용 require
하고module.exports
입니다. 다음은 모듈을 만들고 다른 곳에서 사용하기 위해 내보내는 방법에 대한 간단한 예입니다.
file1.js
const print = (string) => {
console.log(string);
};
exports.print = print;
file2.js
const file1 = require('./file1');
function printOne() {
file1.print("one");
};