Есть ли разница между новым F и новым F ()?

Подумайте о силюции

function F(){}; //This is a Constructor function

Кто мне скажет, есть ли разница между

var myInstance = new F; 

и

var myInstance = new F();

? Новое ключевое слово execute следует сразу за функцией в любом случае, независимо от того, что следует за частями?


person Rui Zha    schedule 29.03.2012    source источник
comment
stackoverflow.com/questions/3034941/   -  person David Hellsing    schedule 29.03.2012


Ответы (2)


Нет никакой разницы. Из Mozilla Docs:

new constructor[([arguments])]

Скобки заключены в квадратные скобки, что означает, что они необязательны.

person Otto Allmendinger    schedule 29.03.2012

Практической разницы нет, можно пропустить парантезу, если не переданы аргументы для упрощения грамматики.

Обратите внимание, что некоторые валидаторы, такие как JSLint, сообщат о предупреждении, если вы их не укажете, поскольку считается более последовательным всегда использовать один и тот же синтаксис для вызова функций конструктора независимо от аргументов.

Этот аналогичный пример был бы очень плохим, если бы вы приобрели эту ленивую привычку:

var one = myFunc;
var two = myFunc();

Это две разные переменные, одна - ссылка на функцию, а другая - возвращаемое значение функции.

person David Hellsing    schedule 29.03.2012