Re[3]: VBScript vs JScript
От: no4  
Дата: 20.06.07 10:39
Оценка:
Здравствуйте, Left2, Вы писали:

no4>>JScript более приятный, зато VBS интегрирован с COM лучше — он понимает COM коллекции,

L>ЕМНИП, через обьект Enumerator JScript тоже умеет с коллекциями работать.

Да
e = new Enumerator(obj);
for (e.moveFirst(); ! e.atEnd(); e.moveNext()) {
  x = e.item();
  //...statements using x
}


вместо

for each x in obj
    '//...statements using x
next
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: VBScript vs JScript
От: Left2 Украина  
Дата: 20.06.07 11:30
Оценка:
ну, в случае с JS это решается одним-единственным враппером:

// Функция для прохода по всем эл-там коллекции
function EnumerateAll(fnToExec) {
    for (var e = new Enumerator(obj); ! e.atEnd(); e.moveNext()) {
        fnToExec(e.item());
    }
};

// потом в коде:
EnumerateAll(function(el) { /* Do something with el */ });
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[5]: VBScript vs JScript
От: Mckey Россия  
Дата: 20.06.07 11:43
Оценка:
Здравствуйте, Left2, Вы писали:

L>ну, в случае с JS это решается одним-единственным враппером:


L>
L>// Функция для прохода по всем эл-там коллекции
L>function EnumerateAll(fnToExec) {
L>    for (var e = new Enumerator(obj); ! e.atEnd(); e.moveNext()) {
L>        fnToExec(e.item());
L>    }
L>};

L>// потом в коде:
L>EnumerateAll(function(el) { /* Do something with el */ });
L>


А obj внутри врапера ни при делах?
По видимому его надо тоже сделать параметром функции EnumerateAll?
Делай добро и бросай его в воду...
Re[5]: VBScript vs JScript
От: no4  
Дата: 20.06.07 12:04
Оценка:
Здравствуйте, Left2, Вы писали:

L>ну, в случае с JS это решается одним-единственным враппером:


L>
L>// Функция для прохода по всем эл-там коллекции
L>function EnumerateAll(fnToExec) {
L>    for (var e = new Enumerator(obj); ! e.atEnd(); e.moveNext()) {
L>        fnToExec(e.item());
L>    }
L>};

L>// потом в коде:
L>EnumerateAll(function(el) { /* Do something with el */ });
L>


А вот так не получается
Object.prototype.each = function (action){
    for (var e = new Enumerator(obj); ! e.atEnd(); e.moveNext()) {
           action(e.item());
    }
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: VBScript vs JScript
От: Left2 Украина  
Дата: 20.06.07 12:04
Оценка:
M>А obj внутри врапера ни при делах?
M>По видимому его надо тоже сделать параметром функции EnumerateAll?

Ну да — сорри, наколенный педаляж
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re[6]: VBScript vs JScript
От: Left2 Украина  
Дата: 20.06.07 12:07
Оценка:
no4>А вот так не получается

typeof(CollectionOfCOMOvjects) != "object", ЕМНИП.
Скорее всего, typeof(CollectionOfCOMOvjects) == "unknown".

Потому и не получается, я так думаю.
... << RSDN@Home 1.2.0 alpha rev. 676>>
Re: VBScript vs JScript
От: ILink  
Дата: 22.06.07 18:55
Оценка:
Главное и основное отличие — это синтаксис.

Если Вы поклонник C,C#,C++ или Java — то Вам лучше пользоваться JavaScript.
Если Basic,VB(A),VB.NET — то VBS

То, что лично меня убивает в VBS:
1) begin/end вместо {}
2) еси ф-я возвращает значение — то пишется со скобками. Иначе — без.
пример:
a = MyProc()
но
MsgBox 'a'
3) отсутствие ;
4) в AND выполняются оба условия, даже если первое ложно. IF (FALSE AND (0/0)) выдаст ошибку деления на ноль.


Но есть в VBS и приятные фичи: например там есть Input, аналога которого нет в JS

В целом же языки позволяют делать одно и тоже.

Выбор между JS/VBS для WSH напоминает выбор межлду C#/VB.NET — дело вкуса.