为了账号安全,请及时绑定邮箱和手机立即绑定

在JavaScript函数中定义全局变量

在JavaScript函数中定义全局变量

凤凰求蛊 2019-06-12 21:18:22
在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 = "";             }
查看完整描述

4 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

是的,就像其他人说的,你可以用var在全局范围(所有函数之外)声明一个全局变量:

<script>var yourGlobalVariable;function foo() {
    // ...}</script>

或者,您可以将属性分配给window:

<script>function foo() {
    window.yourGlobalVariable = ...;}</script>

因为在浏览器里所有全局变量声明的全局变量var的属性。window对象。(在最新规范ECMAScript 2015中,新的letconst,和class全局范围的语句创建不是全局对象属性的全局对象;ES 2015中的一个新概念。)

(还有隐含全球的恐怖,但不要故意这样做,尽量避免偶然,也许是使用es5的。"use strict".)

所有这些都说明:如果可能的话,我会避免全局变量(而且几乎可以肯定)。正如我提到的,它们最终成为了window,和window已经足够拥挤与所有元素一起使用id(许多人只带着name)被转储到它中(不管即将发布的规范是什么,IE都会用name在那里)。

相反,将代码包装在作用域函数中,并使用该作用域函数的局部变量,并在其中设置其他函数闭包:

<script>(function() { // Begin scoping function
    var yourGlobalVariable; // Global to your code, invisible outside the scoping function
    function foo() {
        // ...
    }})();         // End scoping function</script>


查看完整回答
反对 回复 2019-06-12
?
MYYA

TA贡献1868条经验 获得超4个赞

只要声明

var trialImage;

在外面。然后

function makeObj(address) {
    trialImage = [address, 50, 50];....}

希望这能帮上忙。


查看完整回答
反对 回复 2019-06-12
  • 4 回答
  • 0 关注
  • 2651 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信