Перейти к содержимому

Фотография

Вопросы по синтаксису Jscript в TC


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 11

#1 Десятыч

Десятыч

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Кирилл

Отправлено 21 сентября 2011 - 07:37

Здравствуйте!
Есть несколько казалось бы простых вопросов по синтаксису, но нигде пока не могу найти ответа.

1. Как объявить переменную конкретного типа. На подобный код: «var PicCount :integer;» TC ругается.
2. Как объявлять переменные, видимые на уровне модуля.
3. Как описывается функция, ожидающая на вход например строку как обязательный параметр.
  • 0

#2 Kissmybass

Kissmybass

    Активный участник

  • Members
  • PipPip
  • 98 сообщений


Отправлено 21 сентября 2011 - 08:55

Вот пример функции работающей с входящими значениями

function MakeRandomNumber (from, to) {
return Math.floor((Math.random() * (to - from + 1)) + from);
}

в этом примере фукция генерирует рендомные числа в рамках от и до

соответственно для вызова этой фунции в основнойнам надо ввести MakeRandomNumber(10, 100);

Насчет обьявления переменных тут все просто, по ходу действия ты сам выбираешь тип переменной и присваеваешь
ей значения.
  • 0

#3 Kissmybass

Kissmybass

    Активный участник

  • Members
  • PipPip
  • 98 сообщений


Отправлено 21 сентября 2011 - 08:57

http://www.pauk2001.h1.ru/jstoc.htm

Тут находиться справочник по JScript, есть примеры и описания, удачи в познании ))
  • 0

#4 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 21 сентября 2011 - 08:59

Здравствуйте!
Есть несколько казалось бы простых вопросов по синтаксису, но нигде пока не могу найти ответа.

1. Как объявить переменную конкретного типа. На подобный код: «var PicCount :integer;» TC ругается.
2. Как объявлять переменные, видимые на уровне модуля.
3. Как описывается функция, ожидающая на вход например строку как обязательный параметр.


1. Вот так:
var myInt = 0;
2. Как и все остальные переменные, только вне тела функций
var myVar = "some text";
function testMyVar(){
  return myVar;
}
3. Зачем вам это?
UPD: Неправильно понял с первого раза ваш вопрос. Ответ - никак, нужно проверять самому.
function test(wantsStringHere){
  if(typeof(wantsStringHere)!="string"){
    throw new Error("WTF!?");
  }
}

З.Ы. JScript в TC = обычный JavaScript
  • 0

#5 Десятыч

Десятыч

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Кирилл

Отправлено 21 сентября 2011 - 09:57

Определение типа переменной в JScript вроде и должно производиться через двоеточие.
Вот пример с http://msdn.microsof...y/9h139yks.aspx
« Переменные и константы в JScript. Объявление типизированных переменных и констант »
var count : int; // An integer variable.

Он не принимается программой. Функция с такой записью отказывается выполняться, слева появляется сообщение « Error 100: SYNTAX ERROR while processing “:” »


А вот данные по ссылке от Kissmybass:
«В Microsoft JScript в зависимости от ситуации преобразование типов происходит автоматически.»
То есть заданная таким образом числовая переменная прекрасно может позже получить значение True или "text" и никаких сообщений о несоответствии типа не возникнет.

Можно ли как-то объявить именно типизированную переменную, или придётся проверять позже тип данных, который в ней хранится ?
И почему ТестКомплит не принимает код, который скопирован из справочника по Jscript ?
  • 0

#6 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 21 сентября 2011 - 10:37

Ссылка, конечно, интересная, только такой способ не работает ни в TC, ни WSH.

Зачем вам объявлять переменные со статическим типом? Приведите реальный пример, где вы не можете без этого обойтись.
  • 0

#7 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 21 сентября 2011 - 12:03

Определение типа переменной в JScript вроде и должно производиться через двоеточие.
Вот пример с http://msdn.microsof...y/9h139yks.aspx
« Переменные и константы в JScript. Объявление типизированных переменных и констант »
var count : int; // An integer variable.

Он не принимается программой. Функция с такой записью отказывается выполняться, слева появляется сообщение « Error 100: SYNTAX ERROR while processing “:” »

Так в JScript.NET. А TestComplete и Windows Script Host используют обычный JScript:
http://msdn.microsof...y/hbxc2t98.aspx

Можно ли как-то объявить именно типизированную переменную...

Нет.

...или придётся проверять позже тип данных, который в ней хранится ?

Да, именно так. Проверить тип данных переменной можно с помощью оператора typeof или TestComplete'овской функции GetVarType.
  • 0

#8 Десятыч

Десятыч

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Кирилл

Отправлено 21 сентября 2011 - 12:05

Ссылка, конечно, интересная, только такой способ не работает ни в TC, ни WSH.

Зачем вам объявлять переменные со статическим типом? Приведите реальный пример, где вы не можете без этого обойтись.



Привычка с VBA. Неуверено как-то себя чувствую когда в большом проекте где-то нетипизированные переменные передаются.
Мне нужен тип переменной чтобы точно знать что ожидая объект, я не получу false, 1, или что-то типа того. Ну и я надеялся избежать дополнительных функций проверки. )
  • 0

#9 Десятыч

Десятыч

    Новый участник

  • Members
  • Pip
  • 10 сообщений
  • ФИО:Кирилл

Отправлено 21 сентября 2011 - 12:08

В любом случае, спасибо всем большое, вы меня просвятили.
  • 0

#10 Vader

Vader

    Активный участник

  • Members
  • PipPip
  • 129 сообщений
  • Город:Харьков

Отправлено 21 сентября 2011 - 12:15

Так в JScript.NET. А TestComplete и Windows Script Host используют обычный JScript:
http://msdn.microsof...y/hbxc2t98.aspx

Блин, точно. Я не доглядел куда ссылка ведет и очень удивился, когда увидел. :)

Привычка с VBA. Неуверено как-то себя чувствую когда в большом проекте где-то нетипизированные переменные передаются.
Мне нужен тип переменной чтобы точно знать что ожидая объект, я не получу false, 1, или что-то типа того. Ну и я надеялся избежать дополнительных функций проверки. )

Расслабтесь и получайте удовольствие. :) Так все языки с динамической типизацией устроены и еще никто не помер. На самом деле, введение строгой типизации в этом случае вам ничего не даст, т.к. вся разница будет в том, что при строгой типизации вы получите эксепшен в момент присвоения значения с неправильным типом, а при динамической при выполнении каких либо действий над этой переменной.
  • 0

#11 Kissmybass

Kissmybass

    Активный участник

  • Members
  • PipPip
  • 98 сообщений


Отправлено 21 сентября 2011 - 13:10

В любом случае, спасибо всем большое, вы меня просвятили.


Не за что, все мы тут ради передачи знания друг-другу
я сам новичек в ТС, и сам часто задаю вопросы, если что пиши ))
  • 0

#12 ch_ip

ch_ip

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 097 сообщений
  • ФИО:Павел Абдюшев
  • Город:Москва


Отправлено 21 сентября 2011 - 14:57


Привычка с VBA. Неуверено как-то себя чувствую когда в большом проекте где-то нетипизированные переменные передаются.
Мне нужен тип переменной чтобы точно знать что ожидая объект, я не получу false, 1, или что-то типа того. Ну и я надеялся избежать дополнительных функций проверки. )

Расслабтесь и получайте удовольствие. :) Так все языки с динамической типизацией устроены и еще никто не помер. На самом деле, введение строгой типизации в этом случае вам ничего не даст, т.к. вся разница будет в том, что при строгой типизации вы получите эксепшен в момент присвоения значения с неправильным типом, а при динамической при выполнении каких либо действий над этой переменной.

В нормальной IDE при наличии типизации вы получите указание на ошибку в момент написания кода
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных