Я нашел скрытый бонус 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, время: 07:37. |