2014-02-18 2 views
0

저는 최근에 동료들과 어떻게 String.split의 구분 기호가 JavaScript에 의해 내부적으로 처리되는지에 대해 논의했습니다.Javascripts String.split - 내부적으로 어떻게 작동합니까?

구분 기호는 항상 정규식으로 변환됩니까? 예 : String.split(",", myvar)","을 해당 문자열과 일치하는 정규 표현식으로 변환하겠습니까? EX :

+1

JavaScript 사양은 주어진 일련의 입력에 필요한 출력을 개괄하지만 특정 구현은 지정하지 않습니다. 즉, 사양을 구현할 때 브라우저는 원하는대로 자유롭게 수행 할 수 있습니다. 단, 결과가 사양과 일치해야합니다. 기본적으로 : 내부적으로 작동하는 방법은 중요하지 않으며 브라우저간에 일관성이 보장되지는 않습니다. –

답변

0

as seen on this wiki가 당신의 질문에 대한 대답은, 대부분은 ECMA의 버전을 구현 나타납니다 is :

이것은 구현에만 의존합니다. 예를 들어 WebKit 구현 http://svn.webkit.org/repository/webkit/trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp (stringProtoFuncSplit 찾기)을 보면 항상 RegEx로 변환되지는 않습니다. 그러나 이것은 의미가있는 것은 아니며 구현의 문제 일뿐입니다.

+0

고마워, 그게 내가 찾고 있던 대답이었다! – casarock

0

예, 자바 스크립트 함수의 분할은 정규식을 사용할 수 있도록

var str = "I am confused"; 
str.split(/\s/g) 

str을 다음 [ "I", "시", "혼란"]

0

분리 지정을 포함 캐릭터 라인을 단락 짓기 위해서 사용하는 캐릭터 구분 기호는 문자열 또는 정규 표현식으로 처리됩니다. separator가 생략되면 반환되는 배열에는 전체 문자열로 구성된 하나의 요소가 포함됩니다. separator가 빈 문자열이면 str은 문자 배열로 변환됩니다.

여기 String.prototype.split()

0

official writeup over at ecma,하지만 관련 부분이 절 주위 :

이에 대한 자세한 내용을 알 수있는 아래의 링크를 참조하십시오, 그것은 당신을 도울 것입니다 희망

8 . 구분 기호이 RegExp 객체 (해당 [[Class]]가 "RegExp"임) 인 경우 R = 구분 기호로 사용합니다. 그렇지 않으면 R = ToString (구분 기호).

ECMA 사양이라고 말하면서 Anthony Grist가 언급 한 것처럼 브라우저는 원하는대로 구현할 수 있습니다. 예를 들어 V8은 ecma262를 구현합니다.

편집 : "항상 정규 표현식으로 변환 분리인가?": 브라우저/JS 엔진 구현에 생각 확대는

관련 문제