`string.split is not a function` 오류의 원인은 무엇입니까?


110

내가 왜 ...

포착되지 않은 TypeError : string.split은 함수가 아닙니다.

... 내가 달릴 때 ...

var string = document.location;
var split = string.split('/');


2
document.location객체입니다. 시도 :var string=document.location.href
Teemu

답변:


212

변경 ...

var string = document.location;

이에...

var string = document.location + '';

이것은 위치 객체 이기 때문 document.location입니다 . 기본값 은 위치를 문자열 형식 으로 반환하므로 연결이 트리거됩니다..toString()


document.URL문자열을 가져 오는 데 사용할 수도 있습니다 .


57
toString()해키 연결 대신 호출하는 것이 더 깨끗하지 않습니까?
kapa

2
@ bažmegakapa : 네, 그것은 선호도의 문제입니다. 이것은 + ''문자열 강제에 대한 매우 일반적인 트릭이지만 어떤 사람들은이 toString()방법을 선호합니다 . +숫자 변환에 단항 을 사용하는 것보다 더 이상 해키라고 생각하지 않습니다 .

3
그것은 못생긴 것입니다. 이 parseInt()parseFloat(). 도 있습니다 Number(). 은 +해키 코드 나 경험이 적은 익숙하지 사람에 대한 물론 짧은,하지만 덜 읽을 수 있습니다.
kapa apr

+ ''방법은 Chrome 브라우저에서 나를 위해 아무것도 변경하지 않지만 변경 toString()합니다.
Martin Schneider

@ MA-Maddin : 당신은 했습니까 my_string + "".split()? 그렇다면 괄호 +가 필요합니다 .. : 그래서 이런(my_string + "").split()

66

아마도

string = document.location.href;
arrayOfStrings = string.toString().split('/');

현재 URL을 원한다고 가정하면


12

이것을 실행

// you'll see that it prints Object
console.log(typeof document.location);

당신이 원 document.location.toString()하거나document.location.href


감사합니다. 나는 내 var를 문자열에서 객체로 변환한다는 것을 깨닫지 못했습니다. 귀하의 솔루션은 내 코드를 다시 확인하는 아이디어를주었습니다.
sg552

7

document.location 문자열이 아닙니다.

document.location.href또는 document.location.pathname대신 사용하고 싶을 것입니다.


롤. 동시에 4 개 답변 (적어도). 나는 :) SO에 대한 새로운 질문을 보면 안
데니스 Séguret에게

0

clausule if에서 (). 예를 들면 :

stringtorray = "xxxx,yyyyy,zzzzz";
if (xxx && (stringtoarray.split(',') + "")) { ...
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.