Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Странное поведение JScript (https://javascript.ru/forum/misc/24605-strannoe-povedenie-jscript.html)

karkadil 07.01.2012 13:47

Странное поведение JScript
 
Всем добрый день!

Наткнулся на странное поведение то ли интерпретатора wscript.exe, то ли самого JavaScript.

Вот этот код
if (false) or (false)
{
  WScript.Echo('Its alive!');
}


успешно отрабатывает и выдает сообщение. Т.е. по какой-то причине выражение
(false) or (false)

считается истинным, хотя тут просто ошибка синтаксиса.
Если добавить условие else, то будет определяться как ошибка синтаксиса.

Есть идеи? :)

9xakep 07.01.2012 14:11

Может я чего не знаю, но что такое (false) or (false)? В js есть вообще "or"? Может так?
<script>
alert(false || false)
</script>

karkadil 07.01.2012 14:23

Это я сильно упростил пример. И да, конечно оператора OR в джаваскрипте нету. Так в том-то и вопрос, почему тогда не выдается синтакс еррор, а вместо этого возвращается true?

Если вам нужно больше "реальности" в примере - пожалуйста:
var str = "my string";

if (str.indexOf("my") > 0) or (str.indexOf("my") == -1)
{
  WScript.Echo('Wrong position of the word "my"!');
}


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

Kolyaj 07.01.2012 14:25

Скорее всего есть функция or, тогда всё ок.

karkadil 07.01.2012 14:59

Тоже нет. Это пример единственного файла, больше ничего нигде не подключается. Т.е. если дописать такие строки

WScript.Echo(or);
  WScript.Echo(or());


то в первой строке он ругнется на "or is undefined", а во второй - "Object expected"

Livaanderiamarum 07.01.2012 15:12

разжую

Livaanderiamarum 07.01.2012 15:13

if (false) or (false)

if (false){ or (false) };

if (false){ or(false) }; //тут интерпритатор думает что or это функция в которую ты передаешь false, но эта строчка не выполнится потому что в if лежит неправда.
________________________________

если же добавить else ? тогда получается так
if (false) or (false)
else{}

if (false){ or (false) }
else{}

if (false){ or (false) } //эта строчка вообще не выполнится, потому что в условии false
else{ alert('ff') } //а эта соответственно выполнится, ошибки не будет

Kolyaj 07.01.2012 15:17

Livaanderiamarum,
в целом да, но цепочка неправильная. В конце будет
if (false) { or(false); }

Livaanderiamarum 07.01.2012 15:19

Цитата:

Сообщение от Kolyaj (Сообщение 148583)
Livaanderiamarum,
в целом да, но цепочка неправильная. В конце будет
if (false) { or(false); }

точно)

nerv_ 07.01.2012 15:26

Цитата:

Сообщение от karkadil
Есть идеи?

Да, JavaScript и JScript два разных языка.


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