LINUX.ORG.RU

История изменений

Исправление user_id_68054, (текущая версия) :

На самом деле, в JS в любом случае, все функции засовываются в переменную. Даже когда пишешь

function foo(){}

есть кой какие отличия функции от переменной.

смотри ниже пример

(function (global) {
    'use strict'
    
    function foo (x) {
        console.log('я говорю -- ' + x.toString())
    }
    
    // расскомментируйте этот блок, чтобы получить ошибку
    //
    //if (3 > 4) {
    //    function baz (f) {
    //        f('не')
    //        f('льзя')
    //    }
    //}
    
    function bar (f) {
        f('г')
        f('ня')
    }
    
    foo('фи') // обычное выполнеие
    
    bar(foo) // пример first-class выполения
    
    // в итоге мы 3 раза выполнили эту функцию foo()
    
    //delete foo // и это тоже делать запрещено
                 // (хотя с переменными тоже это запрещено делать)
})(this)

а теперь вопрос.. как думаешь — почему на функцию налогатся такие ограничения в отличии от переменных?

ответ (так как сам ты врядли ответишь:)): потому что функции более оптимизирвоаны чем переменные (или могут быть оптимизированы — при желании разработчика JS-движка).

Исправление user_id_68054, :

На самом деле, в JS в любом случае, все функции засовываются в переменную. Даже когда пишешь

function foo(){}

есть кой какие отличия функции от переменной.

смотри ниже пример

(function (global) {
    'use strict'
    
    function foo (x) {
        console.log('я говорю -- ' + x.toString())
    }
    
    // расскомментируйте этот блок, чтобы получить ошибку
    //
    //if (3 > 4) {
    //    function baz (f) {
    //        f('не')
    //        f('льзя')
    //    }
    //}
    
    function bar (f) {
        f('г')
        f('ня')
    }
    
    foo('фи') // обычное выполнеие
    
    bar(foo) // пример first-class выполения
    
    // в итоге мы 3 раза выполнили эту функцию foo()
    
    //delete foo // и это тоже делать запрещено
                 // (хотя с переменными тоже это запрещено делать)
})(this)

а теперь вопрос.. как думаешь — почему на функцию налогатся такие ограничения в отличии от переменных?

ответ (так как сам ты врядли ответишь:)): потому что функции более оптимищирвоаны чем переменные (или могут быть оптимизированы — при желании разработчика JS-движка)

Исходная версия user_id_68054, :

На самом деле, в JS в любом случае, все функции засовываются в переменную. Даже когда пишешь

function foo(){}

есть кой какие отличия функции от переменной.

смотри ниже пример

(function (global) {
    'use strict'
    
    function foo (x) {
        console.log('я говорю -- ' + x.toString())
    }
    
    // расскомментируйте этот блок, чтобы получить ошибку
    //
    //if (3 > 4) {
    //    function baz (f) {
    //        f('не')
    //        f('льзя')
    //    }
    //}
    
    function bar (f) {
        f('г')
        f('ня')
    }
    
    foo('фи') // обычное выполнеие
    
    bar(foo) // пример first-class выполения
    
    // в итоге мы 3 раза выполнили эту функцию foo()
    
    //delete foo // и это тоже делать запрещено
                 // (хотя с переменными тоже это запрещено делать)
})(this)