繁体   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