我需要一个可以容纳不同对象类型的数组,并认为我需要使用某种形式的继承,但后来意识到它已经在Javascript中默认工作了:
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等背景中,数组必须是单一类型,所以这种事情对我来说似乎很神奇。这种事情可以做或者只会导致错误和拉毛吗?
答案 0 :(得分:4)
在javascript中没有强类型的数组,所以没有问题......
答案 1 :(得分:2)
Javascript是一种动态语言,它的数组不是强类型的,所以没关系 这样做:
var x = 12; // Number
x = "12"; // String
x = {}; // Object
x = []; // Array.
...
每个变量都可以容纳每种类型的对象,它不仅仅是数组...
当您使用typeof
运算符时:
if (typeof x === "string")
你不是在“查询”x变量类型,而是它所拥有的值。
C#, java, c++ ...
:必须声明可变数据类型(静态类型)。Javascript
:未声明可变数据类型(动态类型)。