javascript:调用函数参数时遇到问题
我在下面的函数中调用参数时遇到问题javascript:调用函数参数时遇到问题,javascript,function,arguments,Javascript,Function,Arguments,我在下面的函数中调用参数时遇到问题 function makeScales(size,note1,note2,note3,note4,note5,note6,note7,note8){ for(var z=0; z<size; z++){ if(semis=="Sharps"){ notes = notes + " - " + noteSharp["note" + z]; } else { notes
function makeScales(size,note1,note2,note3,note4,note5,note6,note7,note8){
for(var z=0; z<size; z++){
if(semis=="Sharps"){
notes = notes + " - " + noteSharp["note" + z];
} else {
notes = notes + " - " + noteFlat["note" + z];
}
}
}
函数makeScales(大小、注释1、注释2、注释3、注释4、注释5、注释6、注释7、注释8){
for(var z=0;z“note”+z
将为您提供一个类似于“note1”
的字符串,而不是一个标识符
如果您想通过索引访问一段数据,那么将其放入数组中,而不是名称中带有数字的变量中
例如:
function makeScales(size, notes) {
//...
notes = notes + " = " + noteSharp[ notes[z] ];
//...
}
makeScales( "some size", [ "foo", "bar", "baz" ] );
或者(我不推荐这种方法,因为它将不同类型的数据混合在一个数据结构中),您可以使用参数
对象
notes = notes + " - " + arguments[z];
arguments
表示传递给函数的所有参数。第二个参数(akanote1
)将具有索引1
,依此类推。您的问题在于noteSharp[note1]
使用变量note1
的值作为查找键,而noteSharp[“note”+z]
产生一个字符串“note”
,后跟z
的值
要通过字符串引用变量名,请使用eval
:
noteSharp[eval(“note”+z)];
但是,我强烈建议不要使用eval
.do,但可能存在一个问题
请改为这样做,否则会出现Cthulhu。。。
将note1
,note2
,…,noteN
作为对象的属性传递。因此,您可以根据需要精确查找它们的值,只需更深一层
函数makeScales(大小、注释){
var z=1;
var note1=注释[“注释”+z];
}
//用我们的笔记调用makeScales。
makeScales(10{
注1:‘c’,
注2:‘d’,
注3:‘e’,
//等等。
});
您不能使用字符串连接访问参数。但是,您可以通过索引通过参数
对象访问参数。因此,请在1
处启动z
,并使用noteSharp[arguments[z]]
noteSharp[note1]
和noteSharp['note1']
是不一样的。对于你的函数原型,没有很好的方法来完成你想要做的事情。恐怕你没有给我们任何东西可以继续。你所有的注释变量是什么?它们是什么类型的数据?注释最初定义在哪里?你知道它在全局范围内,并且总是未定义的吗假设这个函数没有在以前的某个地方定义,那么它的结尾是什么?请提供一些详细信息/上下文。非常感谢大家的帮助。我添加了一个带有参数的数组,然后通过数组调用了它们,这就完成了。