Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Я нашел скрытый бонус JavaScript (https://javascript.ru/forum/misc/17549-ya-nashel-skrytyjj-bonus-javascript.html)

monolithed 30.05.2011 14:28

Цитата:

Сообщение от Kolyaj
Это писали рубисты для рубистов. Ты, видимо, не рубист.

с выходом ES7 (Strawman) мы все станем рубистами (это не шутка).
Если честно не ожидал, что B. Eich когда-то скажет: "синтаксис JS устарел и ему нужен новый вид".

x-yuri 30.05.2011 20:06

Цитата:

Сообщение от [x-yuri
Вот вы как думаете, в чем причина такого "нетрезвого" взгляда и какой взгляд трезвый?

Цитата:

Сообщение от FINoM
Если вопрос ко мне, то я не говорил что являюсь специалистом мирового класса. Просто не понимаю некоторых вещей, которые надеюсь понять.

вопрос был ко всем

Цитата:

Сообщение от FINoM
Вот, например, в strict mode убрали arguments.callee. Спрашивается, почему? Это ведь так удобно при создании рекурсивных функций.

производительность. Что неудобного в отсутствии arguments.callee?

monolithed 30.05.2011 20:57

Цитата:

Сообщение от x-yuri
Вот вы как думаете, в чем причина такого "нетрезвого" взгляда и какой взгляд трезвый?

дело в том, что Khronos залезли не в свой огород. И если так пойдет дело то JS будет похож на PHP.
new Int32Array(); на мой взгляд если мягко выражаться - некорректно, хотя все семантически верно.
int[] куда приятней или даже []:int
А насчет классов, то они должны появится в ES7 (Strawman) и еще много всяких плюшек.
Цитата:

Сообщение от x-yuri
производительность. Что неудобного в отсутствии arguments.callee?

мне кстати тоже не понятно, зачем убирать если можно подправить.

также как как в PHP куда логичней что конструктор имеет спецификатор __construct, а не как это было раньше.

FINoM 31.05.2011 00:40

Цитата:

Сообщение от x-yuri
Что неудобного в отсутствии arguments.callee?

Его отсутствие.

x-yuri 31.05.2011 00:43

Цитата:

Сообщение от monolithed
дело в том, что Khronos залезли не в свой огород.

да. Видно им очень нужны были эти типизированные массивы, а залезть в огород дальше они не могли (изменить синтаксис)

Цитата:

Сообщение от monolithed
И если так пойдет дело то JS будет похож на PHP.

В случае php, как говорит Лердорф
Цитата:

It is a thin glue layer between your Web server and all the various things you might want your web server to talk to.

In the old tradition of UNIX, we rely on small specialized add-on libraries to do all the heavy lifting with as little interference from PHP as possible.
(кстати, интересно, что он пишет про register globals и magic quotes) Т.е. целью были не красота и последовательность, а решение задач. Достойная цель, я считаю. В случае же с js, типизированные массивы понадобились раньше, чем их добавили в язык. А в дальнейшем типизированные массивы можно будет сделать частью синтаксиса. Причем php на фоне DOM кажется довольно красивым языком, или не? Просто js гибкий, и DOM можно "пропатчить"

Цитата:

Сообщение от monolithed
new Int32Array(); на мой взгляд если мягко выражаться - некорректно, хотя все семантически верно.
int[] куда приятней или даже []:int

я так понял, некорректно == неприятно

Цитата:

Сообщение от monolithed
мне кстати тоже не понятно, зачем убирать если можно подправить.

как подправить?

Цитата:

Сообщение от monolithed
также как как в PHP куда логичней что конструктор имеет спецификатор __construct, а не как это было раньше.

озвучь свою логику

x-yuri 31.05.2011 00:49

...
Цитата:

Сообщение от FINoM
Его отсутствие.

function f(n){
  return n ? f(n-1)*n : 1;
}

ну не воспользовался я arguments.callee, что страшного произошло?

Kolyaj 31.05.2011 09:10

Цитата:

Сообщение от x-yuri
function f(n){
return n ? f(n-1)*n : 1;
}

Плохой пример. Тут функция заведомо имя имеет, его не надо специально придумывать и волноваться, чтобы оно не попало в global scope.

Цитата:

Сообщение от x-yuri
производительность

Если проблема только в производительности, можно просто не использовать arguments.callee, убирать-то зачем?

Цитата:

Сообщение от x-yuri
Что неудобного в отсутствии arguments.callee?

Необходимость придумывать бессмысленные имена для функций.

x-yuri 01.06.2011 02:44

Цитата:

Сообщение от Kolyaj
Плохой пример. Тут функция заведомо имя имеет, его не надо специально придумывать и волноваться, чтобы оно не попало в global scope.

Цитата:

Сообщение от Kolyaj
Необходимость придумывать бессмысленные имена для функций.

ну мне же пример не привели. Поэтому привел я. И естественно, не зная, в чем проблема, пример получился неудачным. К тому же, что значит бессмысленное имя? В моем понимании, если приходится придумывать функции бессмысленное имя, это повод задуматься. В общем мне не хватает примера, чтобы делать какие-то выводы.

Цитата:

Сообщение от Kolyaj
Если проблема только в производительности, можно просто не использовать arguments.callee, убирать-то зачем?

Я слишком лаконично выразился :) Присутствие arguments.callee мешает оптимизировать код (браузеру)

Kolyaj 01.06.2011 09:09

Цитата:

Сообщение от x-yuri
ну мне же пример не привели

Например, http://alljs.ru/articles/timeout/set...l.html#pattern

Хотя на этом, вроде как, примеры и заканчиваются :)

x-yuri 01.06.2011 10:46

ну так, называем функцию onTimeout, по-моему довольно осмысленно. В попадании в global scope тоже проблемы не вижу. Т.е. оно туда попадет, если будет вне всяких функций, а это редко. Но если очень важно, можно и в функцию завернуть (function(){...})()


Часовой пояс GMT +3, время: 12:29.