在写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) }
记录一个错误总结。