Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中传递引用?_Javascript - Fatal编程技术网

如何在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
,而不会出错,但它实际上什么都做不了,这就是我需要的。非常感谢。