【问题标题】:What is the correct javascript term for the square brackets in this context?在这种情况下,方括号的正确 JavaScript 术语是什么?
【发布时间】:2018-01-20 08:54:34
【问题描述】:

在靠近结尾处标记为 1) 和 2) 的脚本行中,我已经评论过,我的问题是关于方括号?在这种情况下,方括号的正确 JavaScript 术语是什么?方括号的使用与括号在这里的工作方式相同吗?即首先计算 () 括号内的代码,然后将计算值传递给该行的其余部分以计算该行的其余部分?

谢谢艾玛:)

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

【问题讨论】:

    标签: javascript


    【解决方案1】:

    这些被称为 IndexBracket 属性访问器。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors

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

    在 Javascript 中,您使用 Index 或简单的 Bracket 表示法访问数组元素。这正是您在代码中所拥有的。

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

    • myObj.property1

    索引/括号表示法:

    • myObj["property1"]

    确切地说,Index 术语在引用数组元素时更合适,而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. 
    

    【讨论】:

    • 好的,阿拉什,非常感谢,我现在想明白了很多。 Var x 是我的幻灯片的类名数组,[i] 和 [slideIndex-1] 是使用括号表示法访问的 X 的属性?对吗
    • 正确。 x 是数组。 x[i]x[slideIndex-1] 是数组元素访问器。您只能使用方括号表示法访问数组的元素;因此,在引用数组时,技术上不需要指定 bracket 事物。在引用对象时,由于您同时拥有 dotbracket 符号,因此在需要时在此处指定它更有意义。
    • 不,x 不是数组。它是一个类似对象的数组。
    • 是的,从技术上讲,但我认为 OP 是 JS 世界的新手,我想知道这种先进的区别在这一点上是否有意义。我认为将x 视为/就像一个数组开始是安全的。 (戴上老师的帽子)
    【解决方案2】:

    它被称为property accessor,带有括号。

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

    您可以使用字符串化索引,例如 1 或只是 1。如果给定的属性访问器不是字符串,则在 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
    

    【讨论】:

    • 感谢尼娜,非常有帮助的意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2011-03-01
    • 2011-03-26
    • 1970-01-01
    • 2018-05-03
    • 1970-01-01
    相关资源
    最近更新 更多