2012-10-10 4 views
0

Можно создать дубликат:
What is the difference between a function expression vs declaration in Javascript?JavaScript myFunction: function (int x) vs function myFunction (int x)?

В чем разница между этими двумя способами объявить функцию в JavaScript?

myFunction : function(variable) 
{ 

} 

или

function myFunction(variable) 
{ 

} 
+4

Первый фрагмент недействителен, если только он не является объектом литерала объекта. Если вы хотите узнать разницу между выражениями функций и объявлениями: http://stackoverflow.com/questions/1013385/what-is-the-difference-between-a-function-expression-vs-declaration-in-javascrip и http : //stackoverflow.com/questions/5403121/whats-the-difference-between-function-foo-and-foo-function. Кроме того, в JS нет таких типов, как 'int' (это тоже недопустимо). –

+0

Он находится внутри var x = declare ("...", {<>}); Что делает этот синтаксис? не могу ли я использовать регулярный синтаксис внутри такого объекта? – antonpug

+1

Итак '{<>}' является литералом объекта, а 'myFunction' является его свойством, удерживая функцию как значение. Тем не менее, в первом случае у вас есть выражение функции, а во втором - объявление функции и различия между этими двумя, были подробно обсуждены ранее. –

ответ

1

Один метод. Другая функция.

Функции определяются

function myfunction() {..} 

методы определены

myobject.mymethod = function() {...} ; 

Метод представляет собой свойство объекта, который указывает на/является функцией этого объекта

Действительно, это зависит от как вы структурируете свои объекты. Функции обычно используются в глобальных библиотеках, которые не являются объектами, тогда как методы привязаны к объектам для выполнения определенных функций.

+0

Что делает оператор «:»? – antonpug

+1

Два примера определения метода myobject.mymethod = functionName или function() {...}; var myobject = { mymethod: function (params) { // ... сделать что-то } }; – DRobertE

+0

: определяет значение ключа ... свойство: значение, где свойство может быть методом или переменной, а значение может быть объявлением функции, определением или именем функции, которое является просто указателем на функцию или значением, как 2 – DRobertE

2

Ваш первый фрагмент кода не действует - он работает только в пределах объекта; Пример:

var object = { 
    myFunction: function(variable) { } 
}; 
// object.myFunction(); 


В основном есть два способа определить функцию Ins JavaScript:

function myFunction(variable) { } 

var myFunction = function(variable) { }; 

Разница заключается в следующем: первый тип декларации использует function заявление и, следовательно, позволяет использовать перед тем, как он будет объявлен. Пример:

console.log(myFunction()); // prints test 
function myFunction(variable) { return "test"; } 

Подробнее об этом here.

Это невозможно при объявлении функции второго типа, которая назначает анонимную функцию переменной. Функция не может быть использована до объявления переменной.

Смежные вопросы