[], Array(), new Array
引数なしである限り、違いはありません。
/(?:)/, RegExp(), new RegExp
Google Chromeで検証した限りでは表向きの動作は違いが無さそうですが、仕様を調査しきれなかったので違いがないとは断言できません。
特に、R1, R2
で RegExp.prototype.source
が (?:)
を返す挙動について調査しきれなかったので、ECMAScript仕様書を確認する事をお勧めします。
空の正規表現を指定しなければならない状況が私には思いつかず、調査する意義を見出せなかったのが正直なところです。
function(){}, Function(), new Function
Function.protype.name
の値が異なります。
'use strict';
var F0 = function(){}, F1 = Function(), F2 = new Function;
console.log(F0.name); // "F0"
console.log(F1.name); // "anonymous"
console.log(F2.name); // "anonymous"
挙動としては、関数コード内の this
値も異なります。
(今回のコードでは関数コードがない為、実質的な影響はありません)
-
function(){}
の関数コード内のthis
値 … 既定値 -
Function(), new Function
の関数コード内のthis
値 … グローバルオブジェクト