2

我需要一个可以容纳不同对象类型的数组,并认为我需要使用某种形式的继承,但后来意识到它已经在 J​​avascript 中默认工作:

var someArray = [];

someArray.push("Hello World");
someArray.push(12);
someArray.push(false);

alert(someArray.pop());
alert(someArray.pop());
alert(someArray.pop());

似乎在 JSFiddle 中工作。这可能是一个愚蠢的问题,但是这样做有什么问题吗?在我的 C、C++、C#、VB .NET 等背景中,数组需要是单一类型的,所以这种事情对我来说似乎很神奇。这种事情可以做吗,还是只会导致虫子和拉扯头发?

4

2 回答 2

4

数组在javascript中不是强类型的,所以没有问题......

于 2012-06-11T15:24:46.647 回答
2

Javascript 是一种动态语言,它的数组不是强类型的,所以没问题。
这样做也是如此:

var x = 12;     // Number
    x = "12";   // String
    x = {};     // Object
    x = [];     // Array.
    ...

每个变量都可以保存每种类型的对象,不仅仅是数组......
当您使用以下typeof运算符时:

if (typeof x === "string")

您不是在“查询” x 变量类型,而是它持有的值。

  • C#, java, c++ ...:必须声明可变数据类型(静态类型)。
  • Javascript:未声明变量数据类型(动态类型)。
于 2012-06-11T15:25:18.207 回答