如何在JavaScript中传递引用?
我需要一个函数,它改变传递属性的值。您可以在下面找到一个不起作用的示例。如何传递属性并访问参数?提前谢谢你如何在JavaScript中传递引用?,javascript,Javascript,我需要一个函数,它改变传递属性的值。您可以在下面找到一个不起作用的示例。如何传递属性并访问参数?提前谢谢你 let top = {target: document.getElementById("header").style.top}; animate(top, 50); function foo(attribute, value) { //some code attribute.target = value + "px"; } 不能将引用传递给字
let top = {target: document.getElementById("header").style.top};
animate(top, 50);
function foo(attribute, value) {
//some code
attribute.target = value + "px";
}
不能将引用传递给字符串、数字和布尔等基本体。但是,您可以传递对对象的引用,在您的示例中是DOM元素:
let [top, attr, subAttr] = [document.getElementById("header"), "style", "top"];
foo(top, 50, attr, subAttr);
function foo(element, value, attr, subAttr) {
if (subAttr) {
element[attr][subAttr] = value+"px";
else {
element[attr] = value+"px";
}
}
为什么不直接将元素作为参数传递
let header=document.getElementById(“header”);
foo(标题“顶部”,50);
函数foo(元素、属性、值){
//一些代码
元素.样式[属性]=值+“px”;
}
我在飞行中编写了代码,但你明白了,对吗
希望能有所帮助。除其他问题外,可能存在重复的问题,如果您是为浏览器编写的,则不应使用
top
作为变量。@MarkMeyer有其他变量吗?@MoritzFerdinandRocker几乎任何其他非top
的变量名都是可选的。您也不能重新定义top
,至少在Chrome和Safari中不能。谢谢!但是我可以单独传递“style.top”吗?可以将其作为数组[“style”,“top”]传递,也可以使用字符串“style.top”进行拆分(“.”)在处理它的函数中。添加了一个如何传递这些附加参数的示例。@connexo打开控制台并键入:let top=1
==>SyntaxError:无法创建覆盖全局属性的重复变量:“top”
您可以使用var top=1
,而不会出错,但它实际上什么都做不了,这就是我需要的。非常感谢。