使用函数外部函数的JavaScript全局变量。请记住,函数已分配给变量

时间:2017-01-10 22:16:14

标签: javascript html scope global-variables

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

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

2 个答案:

答案 0 :(得分:0)

看起来你实际上并没有正在运行函数“tell”。试试这个:

filteredArray

答案 1 :(得分:0)

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

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

在哪里声明常见变量?

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

另一种方法是将函数声明为可以立即调用的函数(IIFE),或者在响应窗口加载或文档就绪事件时执行。在这些函数中声明的变量可以通过外部函数中的代码访问以及嵌套在其中的所有功能。

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