thread.substr(0,1)
의 사용과 .charAt(0)
의 사용간에 실제 차이가있는 경우 첫 번째 문자를 가져올 때 실제로이 문자가 궁금합니다 (실제로는 하나의 문자 만 입력 한 경우에도 적용될 수 있음)..substr (0,1) 또는 .charAt (0)의 차이점은 무엇입니까?
각각 다른 것보다 빠릅니다.
답변 해 주셔서 감사합니다.
최대
thread.substr(0,1)
의 사용과 .charAt(0)
의 사용간에 실제 차이가있는 경우 첫 번째 문자를 가져올 때 실제로이 문자가 궁금합니다 (실제로는 하나의 문자 만 입력 한 경우에도 적용될 수 있음)..substr (0,1) 또는 .charAt (0)의 차이점은 무엇입니까?
각각 다른 것보다 빠릅니다.
답변 해 주셔서 감사합니다.
최대
측정이 중요합니다!
http://jsperf.com/substr-or-charat으로 이동하여 직접 벤치 마크하십시오.
substr (0,1)은 내 컴퓨터에서 초당 21,100,301 회 실행되며 charAt (0)는 초당 550,852,974 회 실행됩니다.
문자열을 분할하는 대신 charAt가 문자열을 배열로 내부적으로 액세스하는 것으로 의심됩니다.
주석에서 발견 된 것처럼 문자열 [0]을 사용하여 char에 직접 액세스하는 것은 charAt (0)를 사용하는 것보다 약간 빠릅니다.
맥스의 대답은 JS가 아니라 자바에 대한 것이 었습니다 ... 또한 결과가 잘못된 방향으로 나타납니다! – Alnitak
첫 번째 숫자는 의심 할 여지없이 높습니다. – templatetypedef
아, 숫자가 틀 렸습니다! –
전체 스크립트가 빠른 문자열 조작의 필요성을 기반으로하지 않는다면, 나는 성능 측면에 대해 전혀 걱정하지 않을 것입니다. 나는 그것이 읽을 수 있고 언어에 의해 제공되는 직업을위한 가장 구체적인 도구라는 근거로 charAt()
을 사용할 것입니다. 또한 substr()
은 엄격하게 표준이 아니며 새로운 ECMAScript 구현에서는이를 생략하지 않을 수도 있습니다. str.charAt(0)
에 대한 표준 기반 대안은 str.substring(0, 1)
및 str.slice(0, 1)
이고 ECMAScript 5 구현의 경우 str[0]
입니다.
프로파일 링을 시도해 볼 수도 있습니다 ... 또한 브라우저 의존성 일 수도 있습니다. –
벤치 마크를 만들 수 있습니다 (http://jsperf.com/). –
@ Felix Kling : 링크에 대한 감사, 북마크 됨! – JMax