Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript全局变量,该变量位于函数外部的函数中。请记住,函数是分配给变量的_Javascript_Html_Scope_Global Variables - Fatal编程技术网

使用JavaScript全局变量,该变量位于函数外部的函数中。请记住,函数是分配给变量的

使用JavaScript全局变量,该变量位于函数外部的函数中。请记住,函数是分配给变量的,javascript,html,scope,global-variables,Javascript,Html,Scope,Global Variables,如何在分配给全局变量tell的函数之外使用全局变量主题 <html> <head> <script> alert(topic); tell = function(){ topic = "something"; }; </script> </head> <body> </body> </html> 看起来您实际上并没有运行函数“tell”。试试这个: <html> <head&g

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

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

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

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

var主题;
var tell=函数(){
topic=“某物”;
};
告诉
警惕(话题);

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

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

在哪里声明公共变量?

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

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


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

在通过
var topic进行警报和功能之前,必须先定义topic
在使用它之前,您需要调用
tell()
某个地方来分配变量define
主题\u在函数外部,在使用它的函数范围内拆分。@Traktor53我没有理解您的意思抱歉。你能解释一下这会有很大帮助吗。非常感谢您使用
onMessageRived
listener进行编辑,您不应该使用全局变量。我想使用topic变量before函数,比如
var topic;tell()警报(主题);var tell=function(){topic=“something”;}然后订购您的物品properly@ShawnikRaghav在设置变量之前,不能调用存储在变量中的函数:变量声明被挂起,但设置它们的值发生在写入的地方。在设置之前,被提升的变量的值为
未定义
请尝试使用命名函数:
函数tell(){//body}
@Traktor53这是原始代码,我想使用topic_splitted
client.onmessagegrived=function(message){topic_splitted=message.destinationName.split(“/”)上的值;console.log(“主题拆分:+Topic\u拆分”);console.log(“消息主题:+Message.destinationName”);console.log(“消息到达:+Message.payloadString”);if(Message.destinationName==“正在进行”){if(Message.payloadString==“false”){stepCode();}var new\u data=JSON.parse(Message.payloadString);$.extend(true,data,data,new_data);}这段代码的长度并不适合于一条注释,而且我也不知道它与这个问题有什么关系。请编辑问题,以便更好地解释问题是什么以及出了什么问题。
<html>
  <head>
    <script>
      var topic;
      var tell = function(){
        topic = "something";
      };
      tell()
      alert(topic);
    </script>
   </head>
  <body>
  </body>
</html>