Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 27.06.2014, 15:37
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от nverv
он из какого языка пришел к нам
Из смолтока и селфа. Собственно, первый JS -- это калька со смолтока. Тут речь не о синтаксисе, а о семантике. синтаксис может быть любым, это не важно.
Ответить с цитированием
  #42 (permalink)  
Старый 27.06.2014, 15:37
Аватар для nverv
Аспирант
Отправить личное сообщение для nverv Посмотреть профиль Найти все сообщения от nverv
 
Регистрация: 26.06.2014
Сообщений: 70

Сообщение от foo Посмотреть сообщение
На самом деле, откуда идут корни проблемы. Объявление без var соответствует оператору set! из scheme -- это оператор деструктивного присваивания. Обьявление без вар не модифицирует глобальную область, он модифицирует низлежащее лексическое окружение. Если бы программисты JS это понимали, они бы не стреляли себе в ногу,


counterMaker=function(start){return function(){console.log(start++)}}
counter=counterMaker(5)

counter()
counter()
counter()
//--------------\  
5
6
7

Это ф-ция с состоянием, и она не засирает глобал, хотя никакого вар тут нет, синтаксически. Все проблемы от непонимания инструмента.
всё таки наверное я тупой, ничо не понял
Ответить с цитированием
  #43 (permalink)  
Старый 27.06.2014, 15:39
Аватар для nverv
Аспирант
Отправить личное сообщение для nverv Посмотреть профиль Найти все сообщения от nverv
 
Регистрация: 26.06.2014
Сообщений: 70

Сообщение от foo Посмотреть сообщение
Из смолтока и селфа. Собственно, первый JS -- это калька со смолтока. Тут речь не о синтаксисе, а о семантике. синтаксис может быть любым, это не важно.
читатель ожидает от тебя в таких случаях примеры кода из языков прототипов
Ответить с цитированием
  #44 (permalink)  
Старый 27.06.2014, 15:43
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
что такое переменная?! если не просто именованный контейнер, адрес относительно глобального корня

о чем мы спорим?
Переменная - это именнованный контейнер, да.

Спорим мы о том, использовать ли var при объявлении переменных в глобальной области видимости. foo заявляет, что не надо, раз возможно.
Ответить с цитированием
  #45 (permalink)  
Старый 27.06.2014, 15:43
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от nverv
ничо не понял
Короче, семантика var -- это создание замыкания, примерно то же самое, что лет. Если рассахарить, это будет вот так

fu1=function(x){return function(){return x+x}}(1)
fu2=function(){var x=1; return x+x}

Это одно и то же.
Ответить с цитированием
  #46 (permalink)  
Старый 27.06.2014, 15:45
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от nverv
примеры кода из языков прототипов
Да я их не знаю. Чем JS тебе не язык прототипов?
Ответить с цитированием
  #47 (permalink)  
Старый 27.06.2014, 15:47
Аватар для nverv
Аспирант
Отправить личное сообщение для nverv Посмотреть профиль Найти все сообщения от nverv
 
Регистрация: 26.06.2014
Сообщений: 70

Сообщение от Erolast Посмотреть сообщение
Переменная - это именнованный контейнер, да.

Спорим мы о том, использовать ли var при объявлении переменных в глобальной области видимости. foo заявляет, что не надо, раз возможно.
я тоже заявляю что не надо, но не поэтому

а потому что есть правильный метод создания именованых контейнеров о общем адресном пространстве - добавьСвойство()

удел оператора var - локальные переменные внутри подпрограмм

- так просто и логично
Ответить с цитированием
  #48 (permalink)  
Старый 27.06.2014, 15:51
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Метод defineProperty используется для определения свойства объекта, и используется лишь в том случае, если надо провесить какие-либо флаги.

Оператор var используется для объявления переменных.

Для определения свойств использовать defineProperty вовсе необязательно. Возможно просто так:
var object = {};
object.property = 10;


---
Все это я уже говорил на страницах сей темы. Но что-то ты все пропустил.
Ответить с цитированием
  #49 (permalink)  
Старый 27.06.2014, 15:55
Аватар для nverv
Аспирант
Отправить личное сообщение для nverv Посмотреть профиль Найти все сообщения от nverv
 
Регистрация: 26.06.2014
Сообщений: 70

Сообщение от Erolast Посмотреть сообщение
Метод defineProperty используется для определения свойства объекта, и используется лишь в том случае, если надо провесить какие-либо флаги.

Оператор var используется для объявления переменных.

Для определения свойств использовать defineProperty вовсе необязательно. Возможно просто так:
var object = {};
object.property = 10;


.
дык этоже не сооответствует "жесткому режиму" ибо следует каждое свойство создавать перед использованием
Ответить с цитированием
  #50 (permalink)  
Старый 27.06.2014, 15:55
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Erolast
Возможно просто так:
И в ноде:
global.object//undefined
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто с нодой может помочь? И какой редактор посоветуете? Антон Крамолов AJAX и COMET 14 22.11.2012 20:34
Проблема с обработкой OnClick suslik90 Events/DOM/Window 1 11.05.2012 21:09
CComponent - кроссбраузерные компоненты tenshi Ваши сайты и скрипты 5 20.04.2010 23:22
Свойства посредством полиморфных функций tenshi Ваши сайты и скрипты 0 18.03.2010 17:12
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37