js中关于函数传参的问题

时间:2021-01-18 18:47:47

    在写js时,碰到了一个关于函数动态传参的问题,在要么参数undefined,要么传参格式不对,之前一直以为是参数过长,后来发现参数长度并没有什么限制,经过总结,整理出了两个示例。

错误代码如下:

function test(){
   	var testData = new Object();
	testData.longdata = '68a';
	testData.shortdata = 'aa';
	testData.numdata = '11';
	testData.specialdata = "04385880000000000101#68c5125ab6c441d3b47a4ce966477757";
	var shortdata = 'bb';
	alert(testData.shortdata+"---")
	alert(shortdata+"~~~~~")
  //错误一:传参使用局部变量,在调用另一方法时,报错
	$("#test").append("<button onclick='show("+'testData.specialdata'+")'>show</button>")
  //错误二:此处需要使用单引号括起来,标记为一个字符串,否则报undefined
	$("#test").append("<button onclick='show("+testData.specialdata+")'>show</button>")
}
function show(data){
	alert(data)
}

 

        因此,在传参时,要注意作用域,其次,如果传的参数为字符串类型,需要进行标记,和引用类型以示区别。

正确参考代码如下:

var testData = new Object();
	testData.longdata = '68a';
	testData.shortdata = 'aa';
	testData.numdata = '11';
	testData.specialdata = "04385880000000000101#68c5125ab6c441d3b47a4ce966477757";
	var shortdata = 'bb';

function test(){
	alert(testData.shortdata+"---")
	alert(shortdata+"~~~~~")
	$("#test").append("<button onclick='show("+'testData.specialdata'+")'>show</button>")
		
}
function show(data){
	alert(data)
}

        记录一个错误总结。