2017-01-10 1 views
0

Как использовать тему глобальной переменной вне функции, назначенной глобальной переменной tell.Используйте глобальную переменную JavaScript, которая находится в функции вне функции. Имея в виду, что функция назначается переменной

<html> 
<head> 
<script> 
alert(topic); 
tell = function(){ 
topic = "something"; 
}; 
</script> 
</head> 
<body> 
</body> 
</html> 

В конце концов я хочу использовать значение topic_splitted в любом месте вне функции.

client.onMessageArrived = function (message) { 
     topic_splitted = message.destinationName.split("/"); 
     console.log("Topic Splitted: " + topic_splitted); 
     console.log("Message Topic: " + message.destinationName); 
     console.log("Message Arrived: " + message.payloadString); 
     if (message.destinationName == "in_progress"){ 
      if (message.payloadString == "false") { 
       stepCode(); 
      } 
     } 

     var new_data = JSON.parse(message.payloadString); 

     $.extend(true, data, data, new_data); 
    }; 
+0

раздел должен быть определен перед предупреждением и функцией через 'var topic;' перед тем, как его можно использовать. –

+0

Вам нужно позвонить 'tell()' где-нибудь, чтобы назначить переменную – Bergi

+0

Определить 'topic_splitted' вне функции, в рамках используя его. – traktor53

ответ

0

Это не хорошая идея использовать необъявленные переменные, такие как topic в tell функции первого почтового примера.

Если вы присваиваете значение необъявленной переменной, JavaScript создает глобальную переменную для вас, если код не работает в строгом режиме. В строгом режиме требуется более безопасный подход к ошибке, чтобы переменная не была определена.

Где объявить общие переменные?

Если переменная должна быть доступна по коду, выполняемому на глобальном уровне при загрузке страницы, его необходимо объявить на глобальном уровне. Это не считается желательным, и его следует избегать, если это возможно.

Альтернативой является объявление переменной внутри функции, которая может быть немедленно вызвана (IIFE) или выполнена в ответ на загрузку окна или события готовности документа. Переменные, объявленные в таких функциях, могут быть доступны кодом внутри внешнего функции и всех функций, вложенных в нее.

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

0

Похоже, вы на самом деле не работает функция «сказать». Попробуйте это:

<html> 
    <head> 
    <script> 
     var topic; 
     var tell = function(){ 
     topic = "something"; 
     }; 
     tell() 
     alert(topic); 
    </script> 
    </head> 
    <body> 
    </body> 
</html> 
+0

Я хочу использовать переменную тему перед тем, как функцией этого ' ' –

+0

затем заказать материал правильно –

+0

@ShawnikRaghav вы не можете вызвать функцию, хранящуюся в переменной до переменной было установлено: объявления переменных являются водрузили но установка их значения происходит там, где это написано.Перед тем, как быть установленным, переменная hoisted имеет значение 'undefined'. Попробуйте использовать именованную функцию:' function tell() {// body} ' – traktor53

Смежные вопросы