我在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 ×1