小编Vla*_*and的帖子

有人可以解释这个JavaScript之谜吗?

我在JavaScript中编写了一个简单的递归函数,遇到了一些非常奇怪的行为.起初我认为这是浏览器中的错误,但我在FireFox,Chrome和IE9中尝试过,它们的行为方式完全相同.

下面的HTML文件在页面加载时运行一个简单的JS函数.该函数是递归的(只调用一次).本质上,该函数创建一个新的Array对象并返回它.奇怪的是,在函数递归调用自身之后,x和y引用同一个对象,据我所知它不应该发生.此外,如果在返回x之前取消注释最后一行,则不会显示警告"x == y"警报.

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>JavaScript weirdness...</title>
<script type="text/javascript" language="javascript">
    function RecursiveF(n) {
        x = [ n ];

        if (n > 0) {
            y = RecursiveF(n - 1);
            if (x == y)
                alert('x == y');
        }

        //if (n == 0) return [ n ];

        return x;
    }
</script>
</head><body onload="javascript:RecursiveF(1);"></body></html>
Run Code Online (Sandbox Code Playgroud)

此页面中是否显示有关"x == y"警报原因的任何提示?

javascript

0
推荐指数
1
解决办法
193
查看次数

标签 统计

javascript ×1