indexOf не является функцией

#javascript

#javascript

Вопрос:

В настоящее время я работаю со следующим кодом. В консоли он выдает

Неперехваченная ошибка типа: TotalAccountBalance.indexOf не является функцией

Я не знаю, что еще делать. Поиск не очень помог.

 var CurrentPreservedBalance, CurrentGeneralAccountBalance, TotalAccountBalance;
    CurrentPreservedBalance = '20.56';
    CurrentGeneralAccountBalance = '20.56';
    if( CurrentPreservedBalance amp;amp; CurrentGeneralAccountBalance ){
        TotalAccountBalance =  CurrentPreservedBalance    CurrentGeneralAccountBalance;
        console.log( TotalAccountBalance.indexOf('.') );
    } else {
        $('#total-fnpf-account-balance').val('$0.00');
        $('#total-account-balance').val('$0.00');
    }
  

Комментарии:

1. Избавьтесь от одного из этих плюсов CurrentPreservedBalance CurrentGeneralAccountBalance; в середине. Тогда TotalAccountBalance. должно сработать. и это плюс спереди. Кроме того, удалите кавычки из ‘20.56’

2. Кстати, зачем вам нужен индекс десятичного числа?

3. @zer00ne у моего клиента есть это глупое требование, из-за которого я даже не понимаю, что происходит.

4. Ах, не говорите больше, у многих клиентов действительно бывают моменты глупости больших масштабов.

Ответ №1:

indexOf() это метод строк, а не чисел.

 console.log( TotalAccountBalance.toString().indexOf('.') );
  

Комментарии:

1. Также в случае, если существует какой null -то сценарий TotalAccountBalance , он может быть преобразован следующим образом, чтобы избежать ошибки: console.log( String(TotalAccountBalance).indexOf('.') );

Ответ №2:

 TotalAccountBalance =  CurrentPreservedBalance    CurrentGeneralAccountBalance;
  

TotalAccountBalance является результатом взятия двух чисел (мы знаем, что это числа, потому что вы использовали унарный оператор plus для их преобразования) и сложения их вместе. Это другое число.

indexOf это метод, который вы находите в строках, а не в числах.

Вы могли бы преобразовать в строку:

 (TotalAccountBalance   "").indexOf('.')
  

Ответ №3:

 TotalAccountBalance =  CurrentPreservedBalance    CurrentGeneralAccountBalance;
  

Операторы унарного плюса преобразуют строки в числа; это, очевидно, желательное поведение для получения правильного математического результата.

Если затем вы хотите использовать строковую функцию (например indexOf ), вам необходимо преобразовать обратно в строку:

 console.log( (""   TotalAccountBalance).indexOf('.') );