[JS] Uncaught TypeError: Undefined is not a function on indexOf 에러 해결방법
2017년 첫 포스팅입니다.
한 변수에서 특정 문자열 유무를 검사하기 위해서 indexOf() 함수를 사용합니다.
여기서 유의 할 점이 있습니다. 데이터 형 검사를 하지 않거나 변환을 시켜주지 않는다면 제목과 같은 에러가 발생할 수 있습니다.
또한 참고해야할 점이 있습니다. DOM 또는 jQuery를 이용해 앨리먼트의 속성을 구해올 때의 데이터형은 무조건 문자열(String) 입니다. 그렇기 때문에 따로 형변환을 거지지 않고도 이 에러는 발생하지 않습니다.
<input id="my_text" value="123" /> <script> console.log($("#my_text").val().indexOf('2')); </script> // result : 1
하지만 변수로 정의된 값의 경우는 다릅니다. 상식적으로 생각하면 당연하게 Intager 형의 변수에서는 에러가 발생합니다.
<script> var my_text = 123; console.log(my_text.indexOf('2')); // result : Uncaught TypeError: Undefined is not a function on indexOf </script>
이런 경우에는 toString() 함수를 이용해 문자열로 형변환을 해줍니다.
<script> var my_text = 123; console.log(my_text.toString().indexOf('2')); // result : 1 </script>