Область действия переменной javascript, объявленной как встроенная - PullRequest
3 голосов
/ 27 августа 2009

Вот сценарии проблемы:

Это из файла HTML:

<script type="text/javascript">
    var devices_record = "some string";
</script>
<script type="text/javascript" src="/js/foo.js"></script>

Это из foo.js:

function bar () {
    devices_record = "assign new string";
}

HttpFox сообщает об ошибке, что запись devices_ не определена. Что дает? Я думал, что запись devices_ будет глобальной переменной, поэтому она должна быть доступна из любого места.

Ответы [ 3 ]

3 голосов
/ 27 августа 2009

Ваш тестовый пример работает на меня. Вот мой полный тест:

foo.js:

function bar () {
    alert(devices_record);
    devices_record = "assign new string";
    alert(devices_record);
}

foo.html:

<html>
<head>
    <script type="text/javascript">
    var devices_record = "some string";
    </script>
    <script type="text/javascript" src="foo.js"></script>
</head>
<body onload="bar()">
</body>

Я получаю два оповещения, первое говорит "some string", второе "assign new string".

Ваша проблема существует в другом месте вашего кода.

1 голос
/ 27 августа 2009

Я считаю, что ваш код работает. По крайней мере, выполнение кода, который вы дадите выше, не вызовет никаких ошибок.

Кроме того, лучше использовать ваши зависимости, такие как foo.js, перед использованием любых встроенных js. Это гарантирует, что ваша библиотека загружается перед вызовом функций при условии, что ваша библиотека.

Кроме того, операторы присваивания не вызовут ошибок «devices_ record is notfined», поскольку вы определяете их с помощью оператора присваивания.

Ваша ошибка, вероятно, вызвана чем-то другим.

0 голосов
/ 27 августа 2009

Объявить devices_record в foo.js . Затем сделайте ссылку на него из JavaScript, встроенного в HTML.

Вы также можете обернуть свой код foo.js в класс, указав в качестве поля / свойства devices_record Это может значительно упростить отлов ошибок, в том числе.

Tidbit: также, если объявление devices_record было размещено до включения скрипта, скрипт может иметь к нему доступ. Однако будьте осторожны с объявлением переменных вне файла, который их использует. Если вы решили включить этот скрипт в страницу, которая забывает объявить devices_record, вы столкнетесь с ошибками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...