Я задавался вопросом, в чем разница между:Различные функции JavaScript формат
function getBasicRow() {}
getBasicRow : function() {}
Я видел 2-й функции, используемой Vtiger CRM и hifive (http://www.htmlhifive.com/)
Я задавался вопросом, в чем разница между:Различные функции JavaScript формат
function getBasicRow() {}
getBasicRow : function() {}
Я видел 2-й функции, используемой Vtiger CRM и hifive (http://www.htmlhifive.com/)
Второй присваивает функцию свойство на каком-либо объектном литерале, поэтому область действия functio n определяется свойством.
Первый создает именованную функцию, не присваивая ее переменной. Функция будет поднята до ближайшего диапазона функций.
Привет, спасибо за ответ сразу. :) Я проверил его и попытался создать функцию. – Ashenvale
Яркое объяснение, которое я нашел here, и хотел бы поделиться им.
различные способы, в которых функция может быть определена в JavaScript являются:
function A(){}; // function declaration
var B = function(){}; // function expression
var C = (function(){}); // function expression with grouping operators
var D = function foo(){}; // named function expression
var E = (function(){ // immediately-invoked function expression (IIFE) that returns a function
return function(){}
})();
var F = new Function(); // Function constructor
var G = new function(){}; // special case: object constructor
Что именно грузоподъемных?
Самое интересное о них, что они «подняли» в верхней части их объема, что означает этот код:
A();
function A(){
console.log('foo');
};
получает выполненный в этом коде:
function A(){
console.log('foo');
};
A();
Какие практически означает, что да, вы можете вызывать функции до того, как они будут записаны в вашем коде. Это не имеет значения, потому что вся функция поднимается до вершины ее области.
Объявление переменной грузоподъемных
объявления переменных поднимаются к верхней части их объема, несколько аналогично, за исключением функционировать подъемно содержимого переменной не поднимается, а также. Это происходит со всеми переменными, и это означает, что теперь это происходит с нашими функциями, теперь мы назначаем их переменным.
Этот код:
var A = function(){};
var B = function(){};
var C = function(){};
Будет выполнен, как это:
var A, B, C; // variable declarations are hoisted
A = function(){};
B = function(){};
C = function(){};
Поэтому порядок установки и вызова этого типа функции имеет важное значение:
// this works
var B = function(){};
B();
// this doesn't work
B2(); // TypeError (B2 is undefined)
var B2 = function(){};
Второй пример дает нам ошибку, потому что поднимается только объявление переменной B2, но не ее определение, th нам «неопределенная» ошибка.
Предоставлено: DavidBCalhoun
Привет, спасибо, что поделились этим. :) Статья, которую вы опубликовали, также проста и очень информативна. – Ashenvale
Второй вариант является недействительным, если оно не является частью литерала объекта. – adeneo
интересный вопрос: какая разница между 'function getBasicRow() {}' и 'var getBasicRow = function() {}'? –