Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 06.09.2010, 11:05
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Запустить! => ошибка: Unexpected token &

Chrome.
Ответить с цитированием
  #32 (permalink)  
Старый 06.09.2010, 11:24
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

Riim,
Движок форума преобразовал юникодовые неразрывные пробелы в  
Плохая идея была их использовать

Так должно заработать:
var foo = "-~/ ";

foo = foo + "";
alert( !!~eval(foo + " / -.5") ); /* true */

alert( eval(                  foo + "+" + foo                  ) ) /* 1 */
alert( eval(            foo + foo + "+" + foo + foo            ) ) /* 2 */
alert( eval(      foo + foo + foo + "+" + foo + foo + foo      ) ) /* 3 */
alert( eval(foo + foo + foo + foo + "+" + foo + foo + foo + foo) ) /* 4 */
// и так далее

Последний раз редактировалось subzey, 06.09.2010 в 11:29.
Ответить с цитированием
  #33 (permalink)  
Старый 09.09.2010, 14:17
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Совсем простенькая

alert(sum()); // ==> 0
alert(sum(2)); // ==> 2
alert(sum(1)(2)(3)); // ==> 6
alert(sum(4)(8)); // ==> 12
// и т.д.


Определить sum
Ответить с цитированием
  #34 (permalink)  
Старый 09.09.2010, 14:20
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

http://javascript.ru/basic/closure#zabavnyy-primer
Вот чему )))))))))
Ответить с цитированием
  #35 (permalink)  
Старый 09.09.2010, 14:24
Профессор
Отправить личное сообщение для Яростный Меч Посмотреть профиль Найти все сообщения от Яростный Меч
 
Регистрация: 12.04.2010
Сообщений: 557

Shaci,

на 3-х и более элементах тот пример не сработал. Длина ряда произвольна.
Ответить с цитированием
  #36 (permalink)  
Старый 09.09.2010, 14:34
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,126

function sum(a) {
  return function(b) {
    return function(c) {
return a + b +c;
}
  }
}
alert(sum(3)(4)(5));

Вот тебе для трех, я на js давно не писал. но думаю можно переписать с легкостью этот код и на произвольное число аргументов.

можно подсчитать количество аргументов ф-ции

Последний раз редактировалось Shaci, 09.09.2010 в 14:53.
Ответить с цитированием
  #37 (permalink)  
Старый 09.09.2010, 14:50
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

var sum = function(a){
  var fnc = function(a){
    fnc.value += a || 0;
    return fnc;
  };
  fnc.value = a || 0;
  fnc.toString = toString;
  return fnc;
}, 
toString = function(){
  return this.value
};

alert(sum()); // ==> 0
alert(sum(2)); // ==> 2
alert(sum(1)(2)(3)); // ==> 6
alert(sum(4)(8)); // ==> 12
// и т.д.
Ответить с цитированием
  #38 (permalink)  
Старый 10.11.2010, 11:54
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

В поисках логического обоснования:

((0)['constructor']['constructor'](//числа могут быть любыми и не обязательно соответствовать друг-другу
      (  
        (0)['constructor']['constructor']
        ('return unescape')
      )()
      ('al%65rt%28%22Hello%20World%21%22%29')
  )
)();


Как может вы уже догадались работает по принципу:
eval(unescape('al%65rt%28%22Hello%20World%21%22%29'))

Последний раз редактировалось monolithed, 10.11.2010 в 12:01.
Ответить с цитированием
  #39 (permalink)  
Старый 10.11.2010, 12:06
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

((0)['constructor']['constructor'](
      ( 
        (0)['constructor']['constructor']
        ('return unescape')
      )()
   
    ('al%65rt%28%22Hello%20World%21%22%29')
  )
)();


(0)['constructor'] == Number
Number['constructor'] == Function


(Function(
      ( 
        Function
        ('return unescape')
      )()
   
    ('al%65rt%28%22Hello%20World%21%22%29')
  )
)();


Если растянуть

(Function((Function('return unescape'))()('al%65rt%28%22Hello%20World%21%22%29')))();


Function('return unescape') == function() { return unescape; }
(Function('return unescape'))() == (function() { return unescape })() == unescape


(Function(unescape('al%65rt%28%22Hello%20World%21%22%29')))();


(Function('alert("Hello World!")'))();


(function() { alert("Hello World!") })();
Ответить с цитированием
  #40 (permalink)  
Старый 10.11.2010, 12:07
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

0 — число. При взятии у него свойства оно преобразовавыется в объект. У объекта есть функция-конструктор. У конструктора есть свой конструктор — Function.

Получаем
(
	Function(
		(Function ('return unescape'))()('al%65rt%28%22Hello%20World%21%22%29')
	)
)();


Уже ближе.
(Function ('return unescape'))() создает функцию и сразу же её выполняет. Результатом будет функция unescape, определенная в глобальном скопе.

(
	Function(
		unescape('al%65rt%28%22Hello%20World%21%22%29')
	)
)();


ну, и

(Function('alert("Hello World!")'))();


Т.е., опять-таки, функция объявляется и сразу запускается.

alert("Hello World!")
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка из твиттера Kolyaj Общие вопросы Javascript 5 08.12.2009 12:01
Непростая задачка с таблицей GreatRash Элементы интерфейса 0 28.10.2009 14:14
Небольшая задачка Maksim jQuery 4 30.09.2009 19:43
задачка на подумать x-yuri Оффтопик 16 11.06.2009 12:39
Задачка: вывод div по ссылке alt5000 Элементы интерфейса 19 28.10.2008 21:21