Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.01.2012, 13:47
Новичок на форуме
Отправить личное сообщение для karkadil Посмотреть профиль Найти все сообщения от karkadil
 
Регистрация: 07.03.2011
Сообщений: 4

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

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

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


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

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

Есть идеи?
Ответить с цитированием
  #2 (permalink)  
Старый 07.01.2012, 14:11
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Может я чего не знаю, но что такое (false) or (false)? В js есть вообще "or"? Может так?
<script>
alert(false || false)
</script>
__________________
оляля, ололо
Ответить с цитированием
  #3 (permalink)  
Старый 07.01.2012, 14:23
Новичок на форуме
Отправить личное сообщение для karkadil Посмотреть профиль Найти все сообщения от karkadil
 
Регистрация: 07.03.2011
Сообщений: 4

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

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

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


но я намеренно упростил изначальный пример, чтобы обратить внимание на значимую часть
Ответить с цитированием
  #4 (permalink)  
Старый 07.01.2012, 14:25
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Скорее всего есть функция or, тогда всё ок.
Ответить с цитированием
  #5 (permalink)  
Старый 07.01.2012, 14:59
Новичок на форуме
Отправить личное сообщение для karkadil Посмотреть профиль Найти все сообщения от karkadil
 
Регистрация: 07.03.2011
Сообщений: 4

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

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


то в первой строке он ругнется на "or is undefined", а во второй - "Object expected"
Ответить с цитированием
  #6 (permalink)  
Старый 07.01.2012, 15:12
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

разжую
Ответить с цитированием
  #7 (permalink)  
Старый 07.01.2012, 15:13
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

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') } //а эта соответственно выполнится, ошибки не будет

Последний раз редактировалось Livaanderiamarum, 07.01.2012 в 15:23.
Ответить с цитированием
  #8 (permalink)  
Старый 07.01.2012, 15:17
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Livaanderiamarum,
в целом да, но цепочка неправильная. В конце будет
if (false) { or(false); }
Ответить с цитированием
  #9 (permalink)  
Старый 07.01.2012, 15:19
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

Сообщение от Kolyaj Посмотреть сообщение
Livaanderiamarum,
в целом да, но цепочка неправильная. В конце будет
if (false) { or(false); }
точно)
Ответить с цитированием
  #10 (permalink)  
Старый 07.01.2012, 15:26
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от karkadil
Есть идеи?
Да, JavaScript и JScript два разных языка.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странное поведение ajax! 0931454574 AJAX и COMET 4 03.04.2011 14:57
Странное поведение... popov654 Общие вопросы Javascript 6 29.03.2011 05:14
Странное поведение переменной mycoding Серверные языки и технологии 4 14.01.2011 19:18
Странное поведение jquery Ziki jQuery 3 02.12.2010 21:09
Странное поведение replace cooli0 Общие вопросы Javascript 4 25.01.2010 17:16