Вопросы по синтаксису Jscript в TC
#1
Отправлено 21 сентября 2011 - 07:37
Есть несколько казалось бы простых вопросов по синтаксису, но нигде пока не могу найти ответа.
1. Как объявить переменную конкретного типа. На подобный код: «var PicCount :integer;» TC ругается.
2. Как объявлять переменные, видимые на уровне модуля.
3. Как описывается функция, ожидающая на вход например строку как обязательный параметр.
#2
Отправлено 21 сентября 2011 - 08:55
function MakeRandomNumber (from, to) {
return Math.floor((Math.random() * (to - from + 1)) + from);
}
в этом примере фукция генерирует рендомные числа в рамках от и до
соответственно для вызова этой фунции в основнойнам надо ввести MakeRandomNumber(10, 100);
Насчет обьявления переменных тут все просто, по ходу действия ты сам выбираешь тип переменной и присваеваешь
ей значения.
#3
Отправлено 21 сентября 2011 - 08:57
Тут находиться справочник по JScript, есть примеры и описания, удачи в познании ))
#4
Отправлено 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
#5
Отправлено 21 сентября 2011 - 09:57
Вот пример с 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 ?
#6
Отправлено 21 сентября 2011 - 10:37
Зачем вам объявлять переменные со статическим типом? Приведите реальный пример, где вы не можете без этого обойтись.
#7
Отправлено 21 сентября 2011 - 12:03
Так в JScript.NET. А TestComplete и Windows Script Host используют обычный JScript:Определение типа переменной в JScript вроде и должно производиться через двоеточие.
Вот пример с http://msdn.microsof...y/9h139yks.aspx
« Переменные и константы в JScript. Объявление типизированных переменных и констант »
var count : int; // An integer variable.
Он не принимается программой. Функция с такой записью отказывается выполняться, слева появляется сообщение « Error 100: SYNTAX ERROR while processing “:” »
http://msdn.microsof...y/hbxc2t98.aspx
Нет.Можно ли как-то объявить именно типизированную переменную...
Да, именно так. Проверить тип данных переменной можно с помощью оператора typeof или TestComplete'овской функции GetVarType....или придётся проверять позже тип данных, который в ней хранится ?
#8
Отправлено 21 сентября 2011 - 12:05
Ссылка, конечно, интересная, только такой способ не работает ни в TC, ни WSH.
Зачем вам объявлять переменные со статическим типом? Приведите реальный пример, где вы не можете без этого обойтись.
Привычка с VBA. Неуверено как-то себя чувствую когда в большом проекте где-то нетипизированные переменные передаются.
Мне нужен тип переменной чтобы точно знать что ожидая объект, я не получу false, 1, или что-то типа того. Ну и я надеялся избежать дополнительных функций проверки. )
#9
Отправлено 21 сентября 2011 - 12:08
#10
Отправлено 21 сентября 2011 - 12:15
Блин, точно. Я не доглядел куда ссылка ведет и очень удивился, когда увидел. :)Так в JScript.NET. А TestComplete и Windows Script Host используют обычный JScript:
http://msdn.microsof...y/hbxc2t98.aspx
Расслабтесь и получайте удовольствие. :) Так все языки с динамической типизацией устроены и еще никто не помер. На самом деле, введение строгой типизации в этом случае вам ничего не даст, т.к. вся разница будет в том, что при строгой типизации вы получите эксепшен в момент присвоения значения с неправильным типом, а при динамической при выполнении каких либо действий над этой переменной.Привычка с VBA. Неуверено как-то себя чувствую когда в большом проекте где-то нетипизированные переменные передаются.
Мне нужен тип переменной чтобы точно знать что ожидая объект, я не получу false, 1, или что-то типа того. Ну и я надеялся избежать дополнительных функций проверки. )
#11
Отправлено 21 сентября 2011 - 13:10
В любом случае, спасибо всем большое, вы меня просвятили.
Не за что, все мы тут ради передачи знания друг-другу
я сам новичек в ТС, и сам часто задаю вопросы, если что пиши ))
#12
Отправлено 21 сентября 2011 - 14:57
В нормальной IDE при наличии типизации вы получите указание на ошибку в момент написания кодаРасслабтесь и получайте удовольствие. :) Так все языки с динамической типизацией устроены и еще никто не помер. На самом деле, введение строгой типизации в этом случае вам ничего не даст, т.к. вся разница будет в том, что при строгой типизации вы получите эксепшен в момент присвоения значения с неправильным типом, а при динамической при выполнении каких либо действий над этой переменной.
Привычка с VBA. Неуверено как-то себя чувствую когда в большом проекте где-то нетипизированные переменные передаются.
Мне нужен тип переменной чтобы точно знать что ожидая объект, я не получу false, 1, или что-то типа того. Ну и я надеялся избежать дополнительных функций проверки. )
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных