首页 > 试题广场 >

阅读下列程序,写出x,y,z最后的值。

[单选题]
阅读下列程序,写出x,y,z最后的值。
var x = 1, y = z = 0;
function add(n)
{
    return n = n + 1;
}
y = add(x);
function add(n)
{
    return n = n + 3;
}
z = add(x);

x=1
y=4
z=4
js的预编译会将
function add(n)
{
    return n = n + 3;
}
去覆盖前面的add方法。
var 
y = z = 0

这里面z变量会变为 window.z=0;这里需要注意的
发表于 2015-02-05 13:46:50 回复(1)
  x = 1     y=2   z=4
发表于 2015-11-04 19:26:40 回复(0)
执行的add()方法为最后一个,最后一个add()方***把前面的方法覆盖掉,打开下面的HTML页面看下就知道了,根据执行的方法来确定返回值,所以X、Y、Z最后的值分别为:1、4、4,谢谢。
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <script>
  var x = 1, y = z = 0;
	function add(n)
	{
		alert("1111");
		return n = n + 1;
	
	}
	y = add(x);
	function add(n)
	{
		alert("2222");
		return n = n + 3;
		
	}
	z = add(x);
	function add(n)
	{
		alert("3333");
		return n = n + 0;
		
	}
	alert(x);alert(y);alert(z);
  
  </script>

 </head>
 <body>
  
 </body>
</html>

编辑于 2015-11-04 15:42:03 回复(0)
后面的会覆盖前面的
发表于 2018-02-08 21:47:02 回复(0)
x:1 y:4 z:4
发表于 2017-07-02 21:33:43 回复(0)
x=1;y=4;z=4;函数的声明会提前
发表于 2016-08-30 22:15:54 回复(0)
x=1
y=4
z=4
函数声明提升,JS不存在重载,所以前面的add被后出现的add覆盖
编辑于 2015-11-10 18:20:47 回复(0)
x=1,y=2,z=4,因为javascript是值传递啊
发表于 2015-11-10 18:03:02 回复(0)

答案是:x = 1, y = 4, z = 4
//var 和 function 的声明都是提前声明的,且 function的声明是优于 var 的,
//上述代码你可以看成如 :

function add(n){
   return n = n + 1;
}

function add(n){// 这个方法将覆盖上面的add 方法
   return n = n + 3;
}
var x ,y,z
x = 1;
y = 0;
z = 0;
y = add(x);
z = add(x);
发表于 2015-11-05 11:08:02 回复(0)
不会做,但是学习了。
发表于 2015-11-05 10:03:19 回复(0)
js的预编译会将
1
2
3
4
function add(n)
{
    returnn = n + 3;
}
去覆盖前面的add方法。
x = 1,y = 4, z = 4

发表于 2015-11-04 09:38:01 回复(0)
y=4 z=4 x=1
发表于 2015-03-13 14:56:13 回复(0)
1、4、4
发表于 2015-03-09 18:02:04 回复(0)
1,2,4
发表于 2015-03-06 13:53:10 回复(1)
1 2 4 一步一步调用即可
发表于 2015-01-09 17:06:20 回复(1)
x = 1
y = 2
z = 4
发表于 2015-01-04 13:37:27 回复(1)