js 定义变量的时候 var 和不带var的作用 具体代码演示

本文探讨了JavaScript中变量作用域的问题,通过蛇游戏的例子解释了如何正确地定义全局变量和局部变量,确保游戏逻辑正常运行。
  这里的代码是正确的,没有任何问题  
var oDiv=document.getElementById('oDiv');
    var i=index=0;

    //定义蛇
    function snake(x,y,pro) {
        //坐标
        this.x=x;
        this.y=y;
        pro.style.left=x+'px';
        pro.style.top=y+'px';
        document.getElementById('oDiv').appendChild(pro);

        //定义蛇移动的时候位置的变化


        //移动
        this.left=function () {
                      alert('1');

        };
        this.right=function () {

        };
        this.up=function () {

        };
        this.down=function () {

        };
        this.eat=function () {

        };
        this.dead=function () {

        };
    }
     //当按键无效时发出响声
      function music() {

      }


//蛇的移动
function move(event) {

    switch (event.keyCode)
    {
        case 38: snakes.up(); break;
        case 40: snakes.down();break;
        case 39: snakes.right();break;
        case 37: snakes.left(); break;
        default: alert('错误');


    }

}
//初始化过程;
   window.onload=function () {

       //在随机位置出产生一个节点,并返回其坐标
       var x=Math.round(Math.random()*100);
       var y=Math.round(Math.random()*10);
       //产生一个节点
       pro=document.createElement('div');
       pro.style.width=20+'px';
       pro.style.height=20+'px';
       pro.style.background='red';
       pro.style.position='absolute';
       //定义一条蛇
       snakes=new snake(x,y,pro);

       if(event) move(event);


   }


而下面这段代码,在定义pro和snakes的时候用到了var,导致snakes在move()这个函数中是无效的变量,
主要还是变量作用域的时候,但定义变量的时候如果在多个函数中会用到最好是不加var
    var oDiv=document.getElementById('oDiv');
    var i=index=0;

    //定义蛇
    function snake(x,y,pro) {
        //坐标
        this.x=x;
        this.y=y;
        pro.style.left=x+'px';
        pro.style.top=y+'px';
        document.getElementById('oDiv').appendChild(pro);

        //定义蛇移动的时候位置的变化


        //移动
        this.left=function () {
                      alert('1');

        };
        this.right=function () {

        };
        this.up=function () {

        };
        this.down=function () {

        };
        this.eat=function () {

        };
        this.dead=function () {

        };
    }
     //当按键无效时发出响声
      function music() {

      }


//蛇的移动
function move(event) {

    switch (event.keyCode)
    {
        case 38: snakes.up(); break;
        case 40: snakes.down();break;
        case 39: snakes.right();break;
        case 37: snakes.left(); break;
        default: alert('错误');


    }

}
//初始化过程;
   window.onload=function () {

       //在随机位置出产生一个节点,并返回其坐标
       var x=Math.round(Math.random()*100);
       var y=Math.round(Math.random()*10);
       //产生一个节点
      var pro=document.createElement('div');
      pro.style.width=20+'px';
       pro.style.height=20+'px';
       pro.style.background='red';
       pro.style.position='absolute';
       //定义一条蛇
       var snakes=new snake(x,y,pro);

       if(event) move(event);


   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值