javascript - 變數引入,引號,加號的使用問題
PHPz
PHPz 2017-05-18 10:59:41
0
4
622

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

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這個字串,為什麼包了兩層引號,在什麼情況下需要這麼做?

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

PHPz
PHPz

学习是最好的投资!

全部回覆(4)
洪涛

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

滿天的星座

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

漂亮男人

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

世界只因有你

首先,這裡的加號的確是用來字串拼接

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?

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板