看下面两个问题

<body>
    <marquee id="container" behavior="alternate" scrollamount="1"
        direction="up" bgcolor="pink" width="300" height="400"> 加速世界
    </marquee>
    <script type="text/javascript">
        var i = 1;
        var t = true;
        document.onkeydown = function(event) {
            var e = event || window.event
                    || arguments.callee.caller.arguments[0];
            if (e && e.keyCode == 37) { // 按 left arrow 
                t = false;
            }
            if (e && e.keyCode == 39) { // 按 right arrow 
                t = true;
            }
            if (t == false) {
                i = i - 1;
            } else {
                i = i + 1;
            }
            if(i < 0){        //速度最低为0
                i = 0;
            }
            document.getElementById("container")
                    .setAttribute("scrollamount", i); //修改滚动速度
        };
    </script>
</body>

var e = event || window.event || arguments.callee.caller.arguments[0]; 

e为什么要这样定义?又是什么意思?


if (e && e.keyCode == 37) 

我试了不加e也可以运行,那为什么要加e呢?

错过了年华
浏览 1585回答 3
3回答

啊呆_2

第一个问题:这样定义是为了浏览器的兼容,此时的e是事件对象。第二个问题:我猜是为了更好的运行性能,如果事件对象e不存在,直接返回false,不必再去判断到底按下了哪个键。如果存在事件对象e,再去判断哪个键被按下才是有意义的。
打开App,查看更多内容
随时随地看视频慕课网APP