2014-11-12 2 views
1

Я задавался вопросом, в чем разница между:Различные функции JavaScript формат

  1. function getBasicRow() {}
  2. getBasicRow : function() {}

Я видел 2-й функции, используемой Vtiger CRM и hifive (http://www.htmlhifive.com/)

+2

Второй вариант является недействительным, если оно не является частью литерала объекта. – adeneo

+0

интересный вопрос: какая разница между 'function getBasicRow() {}' и 'var getBasicRow = function() {}'? –

ответ

3

Второй присваивает функцию свойство на каком-либо объектном литерале, поэтому область действия functio n определяется свойством.

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

+0

Привет, спасибо за ответ сразу. :) Я проверил его и попытался создать функцию. – Ashenvale

1

Яркое объяснение, которое я нашел 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

+0

Привет, спасибо, что поделились этим. :) Статья, которую вы опубликовали, также проста и очень информативна. – Ashenvale

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