[JS] Uncaught TypeError: Undefined is not a function on indexOf 에러 해결방법

[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>
%d 블로거가 이것을 좋아합니다: