Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2013, 16:08
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

конструкция (0,eval)
Собственно вопрос в названии. Вот увидел в одной либе(tod.js) такую конструкцию: (0,eval)('this'). И у меня сразу такой вопрос, как это понимать? первый раз вижу..

я так понял (0,eval) - это функция, а ('this') - параметры вызываемой\вызванной функции..

но как понять именно (0,eval) ???
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2013, 16:10
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от skrudjmakdak
но как понять именно (0,eval) ???
никак, это просто конструкция сбивающая с толку... Наверно сделано для запутывания специально.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 09.10.2013, 16:13
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

угу, понятно.. удалю нафиг, чеб не мешалась
Ответить с цитированием
  #4 (permalink)  
Старый 09.10.2013, 16:18
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

тут использована малоизвестная операция ","
т.е. выражение (a,b,c,....,z) возвращает значение z - последнего элемента в наборе.
в данном случае вернулось eval - функция, которая и вызвалась для 'this', вернув значение this.
вывод: (0,eval)('this') можно заменить на this
Ответить с цитированием
  #5 (permalink)  
Старый 09.10.2013, 16:23
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

Яростный Меч, а польза от такой операции, если и так известно что будет возвращен последний элемент?
Ответить с цитированием
  #6 (permalink)  
Старый 19.11.2013, 11:04
Новичок на форуме
Отправить личное сообщение для Define Посмотреть профиль Найти все сообщения от Define
 
Регистрация: 19.11.2013
Сообщений: 4

Сообщение от skrudjmakdak Посмотреть сообщение
Яростный Меч, а польза от такой операции, если и так известно что будет возвращен последний элемент?
Читайте тут.
http://stackoverflow.com/questions/1...20023#14120023
Ответить с цитированием
  #7 (permalink)  
Старый 19.11.2013, 12:06
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

эх, костыли то какие(
Ответить с цитированием
  #8 (permalink)  
Старый 20.11.2013, 10:37
Новичок на форуме
Отправить личное сообщение для Define Посмотреть профиль Найти все сообщения от Define
 
Регистрация: 19.11.2013
Сообщений: 4

Сообщение от animhotep Посмотреть сообщение
эх, костыли то какие(
Как прокомментировал автор knockoutjs - "это надежный способ получить ссылку на глобальный объект"
var window = this || (0, eval)('this');

так что думать вам использовать это или нет)
Ответить с цитированием
  #9 (permalink)  
Старый 20.11.2013, 10:39
Новичок на форуме
Отправить личное сообщение для Define Посмотреть профиль Найти все сообщения от Define
 
Регистрация: 19.11.2013
Сообщений: 4

Вот еще пример:
(function(undefined){
        var window = this || (0, eval)('this'),
            document = window['document'],
            navigator = window['navigator'],
            jQuery = window["jQuery"],
            JSON = window["JSON"];
            // ...
Ответить с цитированием
  #10 (permalink)  
Старый 20.11.2013, 18:29
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus3
 
Регистрация: 18.11.2013
Сообщений: 275

Сообщение от Яростный Меч
тут использована малоизвестная операция ","
т.е. выражение (a,b,c,....,z) возвращает значение z - последнего элемента в наборе.
в данном случае вернулось eval - функция, которая и вызвалась для 'this', вернув значение this.
вывод: (0,eval)('this') можно заменить на this
ну это он я думаю и так понял, он не понял зачем)

Сообщение от Define
"это надежный способ получить ссылку на глобальный объект"
а я вот так получаю, и это быстрее чем ивал, но это не важно)
(function(){return this}())

^______^

к слову, некоторые еще undefined пот так получают
(void 0)

Последний раз редактировалось Maxmaxmaximus3, 20.11.2013 в 18:33.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что за конструкция? (-function() {}() ) kuzya_vl Общие вопросы Javascript 3 28.02.2013 14:00
Что за чудная конструкция lancer Общие вопросы Javascript 1 29.08.2012 01:28
Почему не работает такая конструкция tavrik83 Общие вопросы Javascript 8 21.01.2012 17:43
Что за конструкция? (из jQuery) Yojik Общие вопросы Javascript 6 22.08.2010 15:46
PHP-шная конструкция ${$var1.$var2}. А в яваскрипте? maxikuku Общие вопросы Javascript 5 16.06.2009 10:36