Я нашел скрытый бонус JavaScript
for(i=0;i<3;i++){ window.setTimeout(function(i){ alert("test"+i); },1000,i); } т.е. параметр i обязателен! |
Аналогично
window.addEventListener("load",function(i){ alert("test"+i); }(i),false); |
Цитата:
test = true, function(x){ var test = x; eval.call(window, "alert(test)"); }(false); // скрытый бонус))) |
Только этот бонус не работает, как цикл находиться внутри функции
|
Цитата:
|
Я уже решил проблему!
|
Цитата:
test = true, function(x) { var test = x; alert(window.test); }(0); :) |
monolithed, мне просто вспомнилось, как когда-то мне надо было эвалить ( я был молод, горяч и любил эвалить:D ) скрипты. Но так как эвал происходит в текущем контексте, переменные оказывались не там, где надо:
(function(){ eval("var test = true;"); }()); alert("test" in window);Тогда я решил проблему так: (function(){ eval.call(window, 'var test = true;'); }()); alert("test" in window);А потом я неожиданно узнал, что в ie так не получится. Тогда мне помог execScript, но с тех пор я понял: нашел "скрытый бонус", первым делом опробуй его в ie!:) |
|
Цитата:
Цитата:
setTimeout(function(){ alert( arguments.length ); }, 1, 1, 2, 3); |
Цитата:
Цитата:
|
Цитата:
|
подобный пример идёт по моему здесь с циклом и таймером
http://www.addconf.ru/event.sdf/ru/a...ySoshnikov/368 |
Немного неприятно, что не идет речи о таких фичах, которые были в ES4:
1. Классы 2. Многострочные строки без использования дурацких конкатенаций и не менее идиотского экранирования переносов """Я большая строка""" 3. Комменты в регулярках 4. Суффиксы (Suffixes on numeric literals denote their type: -7i, 1u, 37d, 14.5m.) 5. "Заполняторы" [i * i for (i in naturals(10))] ... Это то что бросилось в глаза (переопределение операторов и прочие спорные моменты не в счет) |
FINoM,
Цитата:
Цитата:
3. Скорее всего опечатка |
Цитата:
|
FINoM,
Я обратного и не утверждал, но это не одно и тоже, думаю что геттеры и сеттеры очень удобная штука. К примеру какому нибудь свойству, можно задать такой сеттер, что значения присваивать можно будет разных типов данных например, сеттер будет анализировать и приводить к единой системе. И гораздо будет удобнее писать obj.prop = 5, например, чем obj.prop.set(5) Простой пример: (правда я не проверял ничего, просто наобум, но если так пользоваться можно будет, то это здорово) var foo = { val: 0, set dist(d){ if(typeof d == "number"){ this.val += d; } if(typeof d == "string"){ switch(d.replace(/\d*/, "")){ case "km": this.val += +d.replace("km", "") * 1000 * 100 * 10; break; /* case ... */ } } }, get dist(){ return this.val + " millimeters"; } } //а пользоваться очень удобно foo.dist += "5km"; alert(foo.dist); //5000000 millimeters |
Цитата:
Цитата:
|
Цитата:
Цитата:
/# The protocol is an alpha name followed by colon and double slash (?P<protocol> [a-z]+) : /\/\ # The host is two or more dot-separated alpha names (?P<host> [a-z]+ (?: \. [a-z]+ )+) # The path is optionally present (?P<path> (?: \/ [a-z]+ )* \/? ) /x |
Цитата:
Регекспы тоже не могут быть многострочными, поэтому и комментариев в них быть не может. |
Цитата:
|
FINoM,
так это ж просто примеры работы функционала :), практический смысл в реальных задачах |
Цитата:
function valera() { let x = """Я большая строка""".replace('\t'); //не уверен, что правильно, но, надеюсь, смысл понятен |
Уродовать код костылями тоже не лучшая идея.
А в чём проблема с конкатенацией? |
Цитата:
|
Если единственная проблема -- отсутствие альтернативы, то зачем альтернатива, если проблем нет?
|
Цитата:
var expr = new RegExp('\\d|'+ //цифры '\\w|'+ //символы '\\s', 'g' //пробелы ); alert('h e 1 1 0 w'.match(expr)); |
Цитата:
|
кстати, дополнительные параметры setTimeout задокументированы и в частности описан дополнительный параметр, который ff передает в функцию (как-то создал мне проблемы)
Цитата:
Цитата:
|
Цитата:
|
Цитата:
— Почему? — Так делают только мудаки Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
|
Может кто-то объяснить, почему убрали классы и статическую типизацию (кроме массивов)?
|
лично мне сложно судить о чьих-то решениях, не зная, на чем они основаны. Вот вы как думаете, в чем причина такого "нетрезвого" взгляда и какой взгляд трезвый?
|
Цитата:
Цитата:
monolithed, ты как-то говорил про добавление статической типизации в динамический язык, можешь напомнить что? :) |
Цитата:
Цитата:
Цитата:
var array = new Uint8Array(3), i = 3; while(i--) { array[i] = i; } console.log(array); //Uint8Array { 0=0, 1=1, 2=2} ниче, скоро стрелочки еще имплементируют вот как это должно выглядеть (мне кстати безумно нравится, не думал, что БЕ сам такое предложит; Haskel, Ruby напоминает) |
Часовой пояс GMT +3, время: 09:23. |