在JavaScript函数中定义全局变量

在JavaScript函数中定义全局变量

是否可以在JavaScript函数中定义全局变量?

我想用trailimage变量(在makeObj在其他功能中。

<html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
        <script type="text/javascript">
            var offsetfrommouse = [10, -20];
            var displayduration = 0;
            var obj_selected = 0;
            function makeObj(address) {
                **var trailimage = [address, 50, 50];**
                document.write('<img id="trailimageid" src="' + trailimage[0] + '" border="0"  style=" position: 
                absolute; visibility:visible; left: 0px; top: 0px; 
                width: ' + trailimage[1] + 'px; height: ' + trailimage[2] + 'px">');
                obj_selected = 1;
            }

            function truebody() {
                return (!window.opera && document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : 
                document.body;
            }
            function hidetrail() {
                var x = document.getElementById("trailimageid").style;
                x.visibility = "hidden";
                document.onmousemove = "";
            }


凤凰求蛊
浏览 2661回答 4
4回答

婷婷同学_

是的,就像其他人说的,你可以用var在全局范围(所有函数之外)声明一个全局变量:<script>var&nbsp;yourGlobalVariable;function&nbsp;foo()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;...}</script>或者,您可以将属性分配给window:<script>function&nbsp;foo()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;window.yourGlobalVariable&nbsp;=&nbsp;...;}</script>因为在浏览器里所有全局变量声明的全局变量var的属性。window对象。(在最新规范ECMAScript 2015中,新的let,&nbsp;const,和class全局范围的语句创建不是全局对象属性的全局对象;ES 2015中的一个新概念。)(还有隐含全球的恐怖,但不要故意这样做,尽量避免偶然,也许是使用es5的。"use strict".)所有这些都说明:如果可能的话,我会避免全局变量(而且几乎可以肯定)。正如我提到的,它们最终成为了window,和window已经足够拥挤与所有元素一起使用id(许多人只带着name)被转储到它中(不管即将发布的规范是什么,IE都会用name在那里)。相反,将代码包装在作用域函数中,并使用该作用域函数的局部变量,并在其中设置其他函数闭包:<script>(function()&nbsp;{&nbsp;//&nbsp;Begin&nbsp;scoping&nbsp;function &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;yourGlobalVariable;&nbsp;//&nbsp;Global&nbsp;to&nbsp;your&nbsp;code,&nbsp;invisible&nbsp;outside&nbsp;the&nbsp;scoping&nbsp;function &nbsp;&nbsp;&nbsp;&nbsp;function&nbsp;foo()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;}})();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;End&nbsp;scoping&nbsp;function</script>

MYYA

只要声明var&nbsp;trialImage;在外面。然后function&nbsp;makeObj(address)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;trialImage&nbsp;=&nbsp;[address,&nbsp;50,&nbsp;50];....}希望这能帮上忙。
打开App,查看更多内容
随时随地看视频慕课网APP