История изменений
Исправление 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)