一、函数的2种参数传递方式

(1)传值:把变量的值传入函数,函数不会另外分配内存保存值,所以不会改变原始值,一般适用于传入 数字、布尔值、字符串。

(2)传地址:把变量保存的内存地址传入,如果在函数中改变了值,原始值也会被改变。用于传入对象、数组、函数、字符串对象。

 

<!doctype html>
<html>
 <head>
	<meta charset="gb2312">
	<title>实验</title>
	<script language="javascript">
        
		//带2个参数,返回值,a为传值方式,b为传地址方式
		function f2(a,b)
		{
			b.sellNum = a;
			b.amount = a* b.price;
			return b.amount;
		}
        
		//不带参数,无返回值
		function f1()
		{
			var r;
			
			var product = new Object();
			product.name = "男士裤衩30#";
			product.price = 25.8;
			product.sellNum = 0;
			product.amount = 0.0;
            
			//传值:10,传地址:product
			r = f2(10,product);
            document.write(product.name +'(销量):' + product.sellNum+"<br>");  
            document.write(product.name +'(销售金额):' + r+"<br><hr>"); 
			
			//打印出product对象的 属性名称:属性值
			//发现数据已经被修改。
			for(r in product)
				document.write("<br>"+r+":"+product[r]);
		}
	</script>
 </head>

 <body>
    <script language="javascript">
		f1(); 
	</script>
 </body>
</html>

 

 

javascript传递变量 javascript传递参数_html


二、函数的参数数组、变量范围

javascript的函数,都有一个参数数组,也就是arguments对象,保存了传入函数的初始参数值。

javascript的变量范围包括:全局变量、函数内的局部变量。不过,在函数内也能引用全局变量,比如下面代码中的变量C,可以在函数内修改。

 

<!doctype html>
<html>
 <head>
	<meta charset="gb2312">
	<title>实验</title>
	<script language="javascript">
        //全局变量
	    var a,b,c;
		a = 10;
		b = 20;
		c = 30;
        
		//带2个参数,返回值
		function f2(a,b,xx,yy,zz)
		{
			//局部变量a,覆盖了传入参数a的值
		    var a = 0;
			a = 1000;

			//修改全局变量
			c = 200;

			document.write("f2函数的个数:"+f2.arguments.length);
            
			//传入参数的初始值,不会受到全局变量和自定义变量的影响
			for (i in f2.arguments )
			{
				document.write("<br>f2函数的第"+i+"个参数的值:"+f2.arguments[i]);
			}

 			document.write('<br><hr>局部变量');         
			document.write('<br>a:'+a);
			document.write('<br>b:'+b);
		}
        
	</script>
 </head>

 <body>
    <script language="javascript">
		f2(5,4,3,2,1); 

		//全局变量
		document.write('<br><hr>全局变量');
		document.write('<br>a:'+a);
		document.write('<br>b:'+b);
		document.write('<br>c:'+c);
	</script>
 </body>
</html>

javascript传递变量 javascript传递参数_html_02