Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с условным оператором if (https://javascript.ru/forum/misc/30601-problema-s-uslovnym-operatorom-if.html)

z700i 09.08.2012 16:06

Проблема с условным оператором if
 
a = '#id';
b = '.class';
c = 'tag';
function f1(variable){
    (/#/.test(variable))?alert('id'):(/./.test(variable))?alert('class'):alert('tag');
}
function f2(variable){
    if(/#/.test(variable))
        alert('id');
    else if(/./.test(variable))
        alert('class');
    else alert('tag');
}
f1(a); /*Должен выдавать 'id', так как содержит '#'*/
f1(b); /*Должен выдавать 'class', так как содержит '.'*/
f1(c); /*Должен выдавать 'tag', так как не содержит ни первого ни второго*/
f2(a); /*Должен выдавать 'id', так как содержит '#'*/
f2(b); /*Должен выдавать 'class', так как содержит '.'*/
f2(c); /*Должен выдавать 'tag', так как не содержит ни первого ни второго*/

почему в случае с переменной 'c' не содержащей ни '#' ни '.' всё рано выдаёт "class"?

oneguy 09.08.2012 16:17

Символ точка в регулярке является специальным, и если нужно найти именно точку, его нужно экранировать: /\./

mullih 09.08.2012 16:19

потому что точка это любой символ в регекспе вот тк первое условие не выполняется выполняется второе


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