使用函数外函数中的JavaScript全局变量.请记住,函数是分配给变量的



如何在分配给全局变量tell的函数之外使用全局变量主题。

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

最后,我想在函数之外的任何地方使用topic_splited的值。

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);
};

在第一个后示例的tell函数中使用未声明的变量(例如topic)不是一个好主意。

如果将值分配给未声明的变量,JavaScript将为您创建一个全局变量,除非代码在严格模式下运行。在严格模式下,它采取了一种更安全的方法,即抛出一个尚未定义变量的错误。

在哪里声明公共变量

如果页面加载时需要由在全局级别执行的代码访问变量,则需要在全局级别声明该变量。这被认为是不可取的,如果可能的话应该避免。

另一种选择是在函数中声明变量,该函数可能会立即调用(IIFE)或在响应窗口加载或文档就绪事件时执行。。这些函数中声明的变量可以由外部函数中的代码和嵌套在其中的所有函数访问

因此,如果topic_splitted是在所有使用它的函数之外定义的,最好是在一个公共的外部函数中定义的,那么应该没有问题。

看起来您实际上并没有运行函数"tell"。试试这个:

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

相关内容

  • 没有找到相关文章

最新更新