搜尋

首頁  >  問答  >  主體

javascript - 變數引入,引號,加號的使用問題

我一直有一個地方不是很理解,這次看到一段程式碼很能說明問題:

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)
}

我的疑問只有一個地方:

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

在這段經文裡,elementID,final_x,final_y,interval四個是傳入的參數,除了第一個是字串,後面三個都是數字。

我第一個不能理解的地方是這些參數為什麼要加引號,第二個不能理解的是這裡的加號有什麼作用麼。還有一個問題是像elementID這個字串,為什麼包了兩層引號,在什麼情況下需要這麼做?

加號一般我認為適用於字串拼接,但在這裡顯然不是這樣,一對引號就是一個獨立的空間,加號包裹在這裡面有什麼意義麼。

PHPzPHPz2837 天前643

全部回覆(4)我來回復

  • PHP中文网

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

    1.引號包住的是逗號
    2.123456+"somestring"→"123456somestring"
    3.elementId是String型參數所以加引號

    回覆
    0
  • 滿天的星座

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

    變數最後轉為字串啊!數字+引號 變字元穿 如果你需要的參數是字串而不是數字

    回覆
    0
  • 漂亮男人

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

    這裡的字串在setTimeout裡相當於eval的用法,是指你想要在delay毫秒之後執行的程式碼字串

    回覆
    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?

    回覆
    0
  • 取消回覆