在此上下文中,方括号的正确javascript术语是什么?

时间:2018-01-20 08:54:34

标签: javascript

在标记为1)和2)的脚本的行中,在我评论的结尾附近,我的问题是关于方括号?在此上下文中,方括号的正确javascript术语是什么?方括号的使用与括号在此处的工作方式相同吗?即,首先计算()括号内的代码,并将计算值传递给该行的其余部分以计算该行的其余部分?

感谢Emma :)

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



<script>
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";  // 1) the square brackets here?
}
x[slideIndex-1].style.display = "block"; // 2) and the square brackets here? 
}
</script>

2 个答案:

答案 0 :(得分:1)

这些称为索引括号属性访问者。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors

  

属性访问器通过使用提供对对象属性的访问   点符号或括号表示法。

在Javascript中,您可以使用索引括号,表示法访问数组的元素。这正是您在代码中所拥有的。

同样,您可以使用 Dot 表示法访问对象的属性:

  • myObj.property1

索引 / 括号表示法:

  • myObj["property1"]

准确地说,索引术语在引用数组元素时更合适,而 Bracket 术语在引用对象属性时更合适。就个人而言,我可以互换地使用术语。

关于你的第二个问题,不!括号[]与括号()不同。括号用于调用函数。括号仅用于访问数组元素或对象属性。

function sayHello() { // Function definition. Parentheses needed. 
    return "Hello!";
} 

var result = sayHello(); // Calling a function. Parentheses needed.

var obj = { // Object definition. No parentheses.
    name: "Emma"
}

var objName1 = obj.name;  // Accessing a property using Dot notation.
var objName2 = obj["name"]; // Accessing property using Bracket notation. 

答案 1 :(得分:0)

使用括号表示法称为property accessor

object.property     // dot notation
object['property']  // bracket notation

您可以使用字符串化索引,例如11。如果给定的属性访问器不是字符串,则会在advanve中将其转换为字符串。

您使用document.getElementsByClassName

  

返回具有所有给定类名的所有子元素的类数组对象。在文档对象上调用时,将搜索完整文档,包括根节点。您也可以在任何元素上调用getElementsByClassName();它将仅返回具有给定类名的指定根元素的后代元素。

var x = document.getElementsByClassName("mySlides"); // returns an array like object
                                                     // iterable with index and
                                                     // has a length property

for (i = 0; i < x.length; i++) {
    x[i].style.display = "none";
//   ^^^                                             // take the element at index i
}

x[slideIndex - 1].style.display = "block";
//^^^^^^^^^^^^^^^                                    // calculate an index