@ofbarmarus В BAS используется реализация javascript, которая поддерживает стандарт ECMA-262.
https://community.bablosoft.com/topic/2089/javascript-engine/4
TypeError: Result of expression 'VAR_HOST' [undefined] is not an object.
-
@bigorat said in TypeError: Result of expression 'VAR_HOST' [undefined] is not an object.:
@UserTrue ну так на это вам @UserTrue и ответил что в нем не всегда лежит нужное, это первопричина ошибки.
А зачем мне? Я же уже решил проблему человека. После сплита и обращения по индексу - 2 может быть undefined, поэтому я посоветовал выводить урл в лог, что он смог понять что у него там бывает.
-
@bigorat said in TypeError: Result of expression 'VAR_HOST' [undefined] is not an object.:
@kuzkuz said in TypeError: Result of expression 'VAR_HOST' [undefined] is not an object.:
А я проверил. Если выполнить этот код - ошибки нет. Так что Вы не правы )
После split ошибки и не будет, а вот в переменной и её как таковой тоже не будет, так что я прав, у вас не совпадает шаблон разделителя :)
Да. Я не прав. Вы правы!
Буду выводить [[URL]] в лог. А как пофиксить ошибку? ну т.е. чтобы скрипт не останавливалсяif ( [[URL]] ... что то там ) { [[HOST]] = [[URL]].split("/")[2] [[HOST]] = [[HOST]].toLowerCase() } else { [[HOST]] = [[URL]] } -
@bigorat said in TypeError: Result of expression 'VAR_HOST' [undefined] is not an object.:
@kuzkuz ну как я выше и писал к примеру if ( typeof 'VAR_HOST' == "undefined") { VAR_HOST = "" }, так переменная будет существовать с пустым значением и уже не undefined
Не достаточно. Она определена, но кривая (не подходит под сплит)
Сделал такif ([[URL]].indexOf("/") >= 2) { [[HOST]] = [[URL]].split("/")[2] [[HOST]] = [[HOST]].toLowerCase() }но не пашет. странно. первая строка кода не видит что в URL есть //
если в [[URL]] задать например "не_определено" и делать такую же проверку на вхождение символа "е" то все корректно -
@GameBot said in TypeError: Result of expression 'VAR_HOST' [undefined] is not an object.:
@kuzkuz indexOf не проверяет индекс вхождения символа, а не их количество.
if ([[URL]].indexOf("//") >= 1) {тоже не пашет. а написали вы конечно загадкой
-
@kuzkuz said in TypeError: Result of expression 'VAR_HOST' [undefined] is not an object.:
@GhostZ спасибо. Поясните плз в чем заключается такая проверка?
Вам вначале нужно проверить содержит ли строка два символа /
И только при удачной проверке разбивать строку. Иначе будет ошибка при переводе строки в нижний регистр -
@UserTrue said in TypeError: Result of expression 'VAR_HOST' [undefined] is not an object.:
@kuzkuz Так наверное будет работать для любой ссылки
[[HOST]] = [[URL]].replace(/^[\w:]*\/\/?/, '').split('/')[0]10 спасибо. завтра проверю
на php давно бы запрогал, а тут проблемы возникли -
@kuzkuz said in TypeError: Result of expression 'VAR_HOST' [undefined] is not an object.:
@GameBot логику то понимаю , я строку не понял
[[URL]].split("/").length > 2значит тут length проверяет не длинну, а количество. хотя не.. запутка короче, но работает
Split возвращает массив элементов и для него length - это количество элементов
