Странное поведение JScript
Всем добрый день!
Наткнулся на странное поведение то ли интерпретатора wscript.exe, то ли самого JavaScript. Вот этот код if (false) or (false) { WScript.Echo('Its alive!'); } успешно отрабатывает и выдает сообщение. Т.е. по какой-то причине выражение (false) or (false) считается истинным, хотя тут просто ошибка синтаксиса. Если добавить условие else, то будет определяться как ошибка синтаксиса. Есть идеи? :) |
Может я чего не знаю, но что такое (false) or (false)? В js есть вообще "or"? Может так?
<script> alert(false || false) </script> |
Это я сильно упростил пример. И да, конечно оператора OR в джаваскрипте нету. Так в том-то и вопрос, почему тогда не выдается синтакс еррор, а вместо этого возвращается true?
Если вам нужно больше "реальности" в примере - пожалуйста: var str = "my string"; if (str.indexOf("my") > 0) or (str.indexOf("my") == -1) { WScript.Echo('Wrong position of the word "my"!'); } но я намеренно упростил изначальный пример, чтобы обратить внимание на значимую часть |
Скорее всего есть функция or, тогда всё ок.
|
Тоже нет. Это пример единственного файла, больше ничего нигде не подключается. Т.е. если дописать такие строки
WScript.Echo(or); WScript.Echo(or()); то в первой строке он ругнется на "or is undefined", а во второй - "Object expected" |
разжую
|
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,
в целом да, но цепочка неправильная. В конце будет if (false) { or(false); } |
Цитата:
|
|
Часовой пояс GMT +3, время: 19:23. |