suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript – Variableneinführung, Anführungszeichen und Probleme bei der Verwendung von Vorzeichen

Da ist etwas, das ich nicht ganz verstehe. Diesmal habe ich einen Code gesehen, der das Problem sehr gut erklärt:

function moveElement (elementID, final_x, final_y, interval) {
    var elem = document.getElementById(elementID);
    var xpos = parseInt(elem.style.left);
    var ypos = parseInt(elem.style.top);
    ......
    var repeat = "moveElement('"+ elementID +"',"+ final_x +","+ final_y +","+ interval +")";
    movement = setTimeout(repeat, interval)
}

Ich habe nur eine Frage:

var repeat = "moveElement('"+ elementID +"',"+ final_x +","+ final_y +","+ interval +")";

In diesem Absatz elementID,final_x,final_y,intervalwerden die vier Parameter übergeben. Mit Ausnahme des ersten, der eine Zeichenfolge ist, sind die letzten drei alle Zahlen.

Das erste, was ich nicht verstehe, ist, warum diese Parameter in Anführungszeichen eingeschlossen werden müssen. Das zweite, was ich nicht verstehe, ist, was das Pluszeichen hier bewirkt. Eine andere Frage ist, warum diese Zeichenfolge wie elementID in doppelte Anführungszeichen gesetzt wird. Unter welchen Umständen ist dies notwendig?

Im Allgemeinen denke ich, dass das Pluszeichen zum Zusammenfügen von Zeichenfolgen geeignet ist, aber das ist hier offensichtlich nicht der Fall. Ein Paar Anführungszeichen ist ein unabhängiges Leerzeichen.

PHPzPHPz2755 Tage vor599

Antworte allen(4)Ich werde antworten

  • PHP中文网

    PHP中文网2017-05-18 11:01:41

    1.引号包住的是逗号
    2.123456+"somestring"→"123456somestring"
    3.elementId是String型参数所以加引号

    Antwort
    0
  • 滿天的星座

    滿天的星座2017-05-18 11:01:41

    变量最后转为字符串啊!数字+引号 变字符穿 如果你需要的参数是字符串而不是数字

    Antwort
    0
  • 漂亮男人

    漂亮男人2017-05-18 11:01:41

    这里的字符串在setTimeout里相当于eval的用法,是指你想要在delay毫秒之后执行的代码字符串

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-05-18 11:01:41

    首先,这里的加号的确是用来字符串拼接

    var repeat = "moveElement('"+ elementID +"',"+ final_x +","+ final_y +","+ interval +")";

    的结果就是

    var repeat = "moveElement(elementID, final_x, final_y, interval)"

    只是,将这个名叫repeat的字符串变量作为参数传给了setTimeout, 即在interval毫秒后,执行repeat

    var repeat = "moveElement('"+ elementID +"',"+ final_x +","+ final_y +","+ interval +")";
    movement = setTimeout(repeat, interval)

    这里其实基本等同于

    movement = setTimeout(function () {
        moveElement(elementID, final_x, final_y, interval)
    }, interval)

    这样应该比较好理解吧?

    但是这两种方式还是有区别,一般不大推荐题主说的这种方式,具体可见window.setTimeout、Running string as function in javascript setTimeout?

    Antwort
    0
  • StornierenAntwort