我想将变量“模板主体”传递给函数,这可能吗?
这是我的代码

function GetMenu(){
 var templates = [{name:"maher",body:"<p>Maher test</p>"},{name:"Jeremy",body:"<p>Jeremy test</p>"}]
 var payload = []
 for (var i = 0; i<templates.length; i++){
   var templateBody = templates[i].body
     payload.push({
       text : templates[i].name,
       onclick: function(templateBody){tinymce.activeEditor.execCommand('mceInsertContent', false, templateBody);}
 })
}
return payload
}

最佳答案

如果要调用函数,则只能传递变量。但是你不是。但是,由于所有JavaScript函数都是闭包,因此您仍然可以访问在更高范围内定义的任何变量。没有什么特别的事情要做。

代码的问题在于,您正在用参数templateBody遮盖变量templateBody。去掉它:

function(templateBody) -> function()


另一个问题是您正在循环内创建函数。这对于闭包不是很好,但是有解决方案:JavaScript closure inside loops – simple practical example

10-04 11:12