JavaScriptでArray関数は使わないほうがいい

コードをいじっていて気がついたのだが

a = Array(3);
a = [3];
この2つのコードは等価ではない、実行すると下のようになる
[undefined, undefined, undefined]
[3]
しかしこのような場合等価になるようだ
a = Array(true); // [true]
a = [true]; // [true]
a = Array(3,3); // [3,3]
a = [3,3]; // [3,3]
Arrayに引数が1つでかつそれが数値ならその数だけ配列を作りそれ以外なら[〜]で配列を作る時と同じ動作ーかと思ったがどうやら違うようだ、下記のコードだとエラーが発生する
a = Array(1.23); // RangeError: invalid array length
しかし値を2つ与えた場合はエラーは起こらない
a = Array(1.23,1.23); // [1.23,1.23]

Array()がソースコードに紛れていると思わぬ結果が帰ってくるかもしれないので使わないほうが無難なようだ