JS: вызов функции из другого JS-файла [дубликат]

Отсутствует «extern» в объявлениях / определениях переменной const (только для C ++)

Для людей, прибывающих с C, может показаться неожиданным, что в C ++ глобальные переменные const имеют внутренние (или статические) связь. В C это не так, поскольку все глобальные переменные неявно extern (т.е. когда отсутствует ключевое слово static).

Пример:

// file1.cpp
const int test = 5;    // in C++ same as "static const int test = 5"
int test2 = 5;

// file2.cpp
extern const int test;
extern int test2;

void foo()
{
 int x = test;   // linker error in C++ , no error in C
 int y = test2;  // no problem
}

correct would использовать файл заголовка и включить его в file2.cpp и file1.cpp

extern const int test;
extern int test2;

. В качестве альтернативы можно было бы объявить переменную const в файле file1.cpp с явным extern

172
задан suresh manda 31 October 2013 в 09:55
поделиться

6 ответов

Функция может вызываться так, как если бы она находилась в том же файле JS, пока файл, содержащий определение функции, загружается до первого использования функции.

Ie

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).

184
ответ дан Community 27 August 2018 в 00:40
поделиться

да, вы можете. вам нужно отнести обе 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");
}
3
ответ дан anishMarokey 27 August 2018 в 00:40
поделиться

Пока обе страницы ссылаются на веб-страницу, да.

Вы просто вызываете функции так, как будто они находятся в одном JS-файле.

9
ответ дан jball 27 August 2018 в 00:40
поделиться

Если все файлы включены, вы можете вызывать свойства из одного файла в другой (например, функция, переменная, объект и т. д.)

Функции js и переменные, которые вы пишете в одном файле .js, - скажем a.js будет доступен для других js-файлов - скажем b.js , если оба a.js и b.js включены в файл, используя следующий механизм include (и в том же порядке, если функция в b.js вызывает одно в a.js).

<script language="javascript" src="a.js"> and 
<script language="javascript" src="b.js">
5
ответ дан Sayan 27 August 2018 в 00:40
поделиться

Вы можете вызвать функцию, созданную в другом файле 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>

Если вы хотите передать параметры к функции, затем определите функцию as -

$.fn.functionWithParameters = function(parameter1, parameter2){
        alert('Parameters passed are - ' + parameter1 + ' , ' + parameter2);
}

И вызовите эту функцию в вашем текущем файле как -

$('#element').functionWithParameters('some parameter', 'another parameter');
0
ответ дан sheetal 27 August 2018 в 00:40
поделиться

В приведенном выше ответе неверное предположение о том, что порядок включения файлов имеет значение. Поскольку функция 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>

, тогда вам нужно быть осторожным .

64
ответ дан Stuart Wakefield 27 August 2018 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: