簡體   English   中英

Javascript,這個函數中的 (n) 和方括號是做什么的?

[英]Javascript, what are (n) and the square brackets doing in this function?

只是有幾個問題可以幫助我理解這個腳本,因為它是 OP,解釋很簡單。

1) (n)傳遞給函數 plusDivs 和 showDivs。 這個(n)如何工作的? 是否只是一個空容器來存儲函數中的數據。

2) 用這一行x[i].style.display="none"; x[slideIndex-1].style.display="block"; 使用方括號后,方括號內的代碼是先執行的嗎? 在這種情況下,方括號在做什么或調用什么。

盡管在線教程中以基本方式解釋了函數,但我要求的某些信息很難找到,因此希望得到一些幫助。

謝謝艾瑪。

JS:

var slideIndex = 1;
showDivs(slideIndex);

function plusDivs(n) {
    showDivs(slideIndex += n);
}

function showDivs(n) {
    var i;
    var x = document.getElementsByClassName("mySlides");
    if (n > x.length) { slideIndex = 1 } 
    if (n < 1) { slideIndex = x.length };
    for (i = 0; i < x.length; i++) {
        x[i].style.display = "none"; 
    }
    x[slideIndex-1].style.display = "block"; 
}

HTML:

<button style="border:none; font-size: 22px;background-color:black; color:white; position:fixed; top:30%; left:5%" onclick="plusDivs(-1)">&#10094;</button>
<button id="rightbutton" style="border:none; font-size: 22px;background-color:black; color:white;position:fixed; top:30%; right:5%" onclick="plusDivs(1)">&#10095;</button>

在 JavaScript 中,函數是代碼的一部分,它接受調用者提供的稱為“參數”的信息,並在代碼中使用它們。 函數的語法是

function (x, y) {
    return x + y;
}

如果要調用上述函數:

(function (x, y) {
    return x + y;
})(1, 1)

結果是2

[括號]是下標運算符。 在數組的上下文中,它們采用數字索引並返回該位置的元素:

[1, 2, 3][0] === 1

在對象的上下文中,它們接受一個鍵並返回映射的值:

(({
     'foo' : 'bar'
})['foo']) === 'bar'

在您的情況下,函數getElementsByClassName返回一個元素數組,因此括號表示數組訂閱並用於檢索數組的元素。

1) (n) 傳遞給函數 plusDivs 和 showDivs。 這個 (n) 是如何工作的? 是否只是一個空容器來存儲函數中的數據。

傳遞給 plusDivs() 函數的整數,它的意思是通過按下按鈕將“-1 和 +1”整數作為參數傳遞給函數,並且在您的函數中,它將從您當前的幻燈片索引添加/聯系它,這將導致您的滑塊移動向前(下一張幻燈片)或向后(上一張幻燈片)

2) 用這一行 x[i].style.display="none"; 和 x[slideIndex-1].style.display="block"; 使用方括號后,方括號內的代碼是先執行的嗎? 在這種情況下,方括號在做什么或調用什么。

正如我在評論中提到的,它們用於在數組中查找第 n 個元素。 在您的代碼中,您首先找到所有幻燈片並將它們緩存到一個變量中,因此當您需要找到第 n 張幻燈片時,您最常用的是這張slide[slide number 2] (這只是偽代碼)

我認為這種情況下的答案不是很清楚。 您問題中的(n)i只是自由變量。 它們可以是任何字母(例如, i可以是'b'或其他一些字母)。

它們只是命名和引用 var 屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM