Можно ли объявить переменную прямо в массиве или объекте
Такой код не работает:
var goods = [15, 'str', var i = 5, {text : 'last element'}]; Этот код также не работает var goods = { text : var i = 5 } Можно ли объявить переменную прямо в объекте или массиве или нет? |
Цитата:
|
Цитата:
var goods = [15, 'str', (i = 5, 'test')]; alert(i); alert(goods[2]); |
Спасибо... но как я понял вы просто избавились от 'var', возможны ли какие либо последствия в виде ошибок в некоторых браузерах например? Просто здесь же в учебнике написано об необходимости использования var.
|
Как вариант, использовать самовызываемые функции
var a = [1, 'два', (function() { var hide = 'эта переменная доступна только тут'; window.newVar = 'Три. Привет из массива'; return window.newVar; }())]; console.log(a[2]); console.log(newVar); Но при этом переменная newVar станет глобальной. Если это тебе и нужно, то ок. |
Цитата:
И там не написано "старайтесь использовать var в любом месте"... :D Какая выгонка использовать его при объявлении массива или объекта? Тем паче, что var может находиться в любом месте "уровня"... |
Цитата:
|
petya, ты меня с кем-то путаешь... :D Начни читать тему с самого начала. ;)
|
Цитата:
|
Я вот о чем:
var a=1 console.log(delete a) Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Arramis,
2 года? Да ты шутишь, вангую к следующему лету(а то и раньше) народ начнёт перекатываться на шестую. |
Цитата:
|
Arramis, ну ну. Вон товарищ kobezza пилит себе спокойненько свой проект на es6. Сейчас для запуска просто пользуется компиляцией в es5, а как везде появится поддержка - просто выкинет этап компиляции.
Абсолютно адекватный подход. Даже мне уже порой лениво писать вместо ([{prop:foo}]) => this.bar+foo function(foo){ return this.bar+foo[0].prop }.bind(this) Не говоря уже о таких прекрасных штуках как WeakMap, или генераторы(коими я проникся пока только наполовину):) |
А Хром нипонял без слова function. У меня было так
... prop:return this.prop1/some_var, ... В ФФ все молчали, а в Хроме разорались, пришлось завернуть боты prop:function()... |
Цитата:
|
Erolast,
я не про отказ говорил, никто и не спорит что на es6 удобнее будет писать, но дело в том сколько уйдёт времени чтобы привыкнуть полностью, да и вобще нынче стало модным добавлять лямбды в императивные языки, везде уже есть - в c++, c# теперь и в js впихнули... надоело |
Arramis, к хорошему быстро привыкаешь. См. выше.)
|
Цитата:
|
Цитата:
|
Arramis,
Нет, я спрашиваю, когда в JS не было лямбд? Лет 20 назад? 30? Причем тут новый стандарт? Какие он лямбды еще вводит, помимо тех которые уже есть? Собственно, лямбды в JS ,с самого начала, он с ними появился. Где то я читал, что там изначально не было лексических замыканий. Но это было очень давно. |
petya,
то что ты называешь в js лямбда выражениями это не совсем то что в фукнциональных языках. |
Arramis,
Ты не мог бы ясней выражаться, чем отличаются лямбды в ФЯ от остальных лямбд? Очень интересно. |
Цитата:
|
Arramis,
Это никакого отношения к определению лямбд не имеет. Лямбды -- это первоклассные функции, как правило, безымянные, и ничего более. Остальное -- это твои фантазии. |
Цитата:
|
petya,
отношение имеет такое что лямбда это такая же функция как и любая другая, когда ты создаешь безымянную функцию её безымянность исчезает в процессе компиляции иначе как бы виртуальня машина вызывалала её без идентификатора ?? всевышний чтоли это делает по твоему ? всё мною вышесказанное имеет место быть, иди учи основы |
Цитата:
|
Arramis,
Еще раз: ты говоришь о чем то другом. Само понятие лямбда-выражение, появилось задолго до появления быдло-ФП, оно появилось в лиспах. |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 11:47. |