JavaScript新手:我可以将List传递给此函数并使其仍然有效吗?

时间:2016-04-27 15:23:55

标签: javascript arrays list function

正如标题所说,我是JavaScript的新手,并不完全确定某些语法。

在找了一会儿后,我找到了以下功能:

function makeUL(array) {
    // Create the list element:
    var list = document.createElement('ul');

    for (var i = 0; i < array.length; i++) {
        // Create the list item:
        var item = document.createElement('li');

        // Set its contents:
        item.appendChild(document.createTextNode(array[i]));

        // Add it to the list:
        list.appendChild(item);
    }

    // Finally, return the constructed list:
    return list;
}

我需要知道的是,如果我将一个字符串列表传递给函数参数,它是否仍然可以工作,或者当它说数组是定义它是什么类型的变量?如果它目前不适用于List需要改变什么?

5 个答案:

答案 0 :(得分:1)

  

当它说数组是定义它是什么样的变量?

没有。它定义了参数将在函数范围内赋值的变量的名称。

JavaScript(至少你在这里使用的ES5)没有函数参数的任何类型强制执行,所以你可以传递你喜欢的任何值。

该函数确实希望您传递的值是一个具有length属性的对象和一些名称为整数的属性(即它希望该值类似于一个数组(另见duck typing))。

列表不是标准的JavaScript数据类型。如果您已经创建了一个List对象,那么只要它是类似数组就可以传递它。

答案 1 :(得分:1)

array只是预期参数的名称。 它可以是任何类型(Javascript没有类型)

所以:是的,你的清单仍然会#34;工作&#34; (当然,只要它支持在其上调用的函数)

答案 2 :(得分:1)

您可以传递任何包含字符串项的数组类数组对象,无论参数如何命名,您的函数都将按预期工作。

类似于数组的对象是一个对象,具有length属性,值&gt; = 0 且属性 0..length- 1 。类似于数组的对象offen 实现Array方法。可以使用a instanceof ArrayArray.isArray(a)将数组与类似数组的对象区分开,而typeof a在两种情况下都返回'object'

答案 3 :(得分:0)

它仍然可以使用。真的在javascript中说有一个数组没有这样的列表。因此,即使您使用以下参数调用该函数:

makeUL(["Cpp","Java","Javascript"])

输出结果为:

<ul>
  <li>Cpp</li>
  <li>Java</li>
  <li>Javascript</li>
</ul>

答案 4 :(得分:0)

我假设您的意思是Array。但我认为你的函数只是返回一个DOM元素,所以你不会直接在浏览器中看到它,除非你将它附加到DOM树中。

var listofstrings = ['item 1','item 2','item 3'];
document.getElementByName('body').appendChild(makeUL(listofstring));