Разница между функциями в Javascript - PullRequest
0 голосов
/ 28 апреля 2018

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

Мой вопрос такой:

Является ли function create(){}; таким же, как create: function(){};?

Если нет, то в чем разница? Когда использовать один способ ввода, а когда другой? Что значит двоеточие?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Синтаксис двоеточия сам по себе не означает, что вы создаете функцию. Используется при создании литерала объекта. Двоеточие действует как оператор присваивания (например, =), чтобы дать свойствам объекта их значения.

В JavaScript объекты действительно просто имеют свойства (а не методы). Но эти свойства могут хранить функции (функции - это данные в JavaScript).

Итак, вот литерал объекта, который создает некоторые свойства:

var myObject = {
  property1: "42",
  anotherProperty: true,
  aPropertyThatStoresAFunction: function(){
    console.log("You invoked the function stored in the property!");
  }
};

// Now, we can access the object's properties:
console.log(myObject.property1);
console.log(myObject.anotherProperty);
console.log(myObject.aPropertyThatStoresAFunction); // Notice here the actual function's code is logged?

// But, since functions are also bits of invocable code, if you access the function
// stored in the property and then add () on to the end of it, you can invoke the function
myObject.aPropertyThatStoresAFunction();
0 голосов
/ 28 апреля 2018

Это самый стандартный способ создания функции:

function create(){
    console.log("inside function");
}

Если функция является свойством объекта, вы используете двоеточия:

myobject = {
    create: function(){
        console.log("inside function");
    }
};

Функции также могут быть назначены:

var create = function(){
    console.log("inside function");
}

Функции также являются объектами, их нет в javascript, потому что javascript такой странный. Так с выше:

create.myproperty = true;

- допустимый синтаксис.

И чтобы сделать это еще более странным, анонимные функции могут быть назначены, как указано выше, но также могут вызываться самостоятельно:

(function () {
    console.log("inside function");
})();

Это грязно, но, к сожалению, часто используется в библиотеках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...