반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트
- 웹개발
- 빅데이터
- 컴퓨터비전
- 네트워크
- 버전관리
- 데이터분석
- I'm Sorry
- 소프트웨어
- 프로그래밍
- 보안
- 파이썬
- 컴퓨터공학
- 사이버보안
- 2
- 데이터베이스
- 머신러닝
- 코딩
- 자료구조
- 알고리즘
- 프로그래밍언어
- 딥러닝
- 데이터구조
- 인공지능
- 컴퓨터과학
- 클라우드컴퓨팅
- Yes
- 소프트웨어공학
- 데이터과학
- 네트워크보안
Archives
- Today
- Total
스택큐힙리스트
Javascript .replaceAll()은 함수 유형 오류가 아닙니다. 본문
반응형
문서 페이지: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll
let string = :insertx: :insertx: :inserty: :inserty: :insertz: :insertz:;
let newstring = string.replaceAll(:insertx:, '안녕하세요!');
이를 실행하면 Uncaught TypeError: string.replaceAll은(는) 함수가 아닙니다.
라는 오류가 발생합니다. 아마도 제가 프로토타입을 잘 이해하지 못한 것 같습니다만, 이 함수는 사용 가능한 문자열 메소드인 것 같습니다.
저는 크롬을 사용하고 있습니다.
답변 1
let string = :insertx: :insertx: :inserty: :inserty: :insertz: :insertz:;
let newstring = string.replace(/:insertx:/g, '안녕하세요!');
console.log(newstring);
더 일반적인 해결책을 위해 정규식 메타문자를 이스케이프하고 RegExp
생성자를 사용할 수 있습니다. 또한 이 함수를 폴리필로 String.prototype
에 추가할 수도 있습니다.
(바꿀 문자열을 이스케이프하여 정규식에서 특별한 의미를 가지는 문자가 문자 그대로 해석되도록 하여 예를 들어 .
는 실제 점만을 의미하게 됩니다.)
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions 에서 가져옴
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $&는 전체 일치하는 문자열을 의미합니다.
}
function replaceAll(str, match, replacement){
return str.replace(new RegExp(escapeRegExp(match), 'g'), ()=>replacement);
}
console.log(replaceAll('a.b.c.d.e', '.', '__'));
console.log(replaceAll('a.b.c.d.e', '.', '$&'));
사양에 맞는 부족한 기능을 찾을 수 있습니다. 여기에서 확인할 수 있습니다.
답변 2
자바스크립트의 .replaceAll() 함수는 없는 함수 타입 오류입니다.자바스크립트는 많은 편리한 내장 함수들을 가지고 있지만, 그 중 .replaceAll() 함수는 존재하지 않습니다. 이 함수는 문자열 내의 특정 문자열을 다른 문자열로 대체하는 기능을 제공하는 함수입니다. 그러나 자바스크립트에서는 이 함수를 사용할 수 없기 때문에 replaceAll is not a function이라는 오류 메시지가 표시됩니다.
.replaceAll() 함수 대신에는 .replace() 함수를 사용할 수 있습니다. 두 함수는 비슷한 기능을 제공하지만 사용 방법에 약간의 차이가 있습니다. .replace() 함수는 첫 번째로 전달된 문자열을 검색하여 해당 문자열을 두 번째로 전달된 문자열로 대체합니다. 그러나 이 함수는 문자열 내에서 첫 번째 출현한 문자열만 바꾸기 때문에 전체 문자열을 대체하려면 정규식을 사용해야 합니다. 예를 들어, 다음과 같이 사용할 수 있습니다.
```javascript
let str = Hello, world!;
let newStr = str.replace(/Hello/g, Hi);
console.log(newStr);
```
위의 코드에서는 Hello라는 문자열을 Hi로 대체하는 것으로 전체 문자열을 바꿀 수 있습니다. 출력 결과는 Hi, world!가 됩니다.
이와 같이 .replace() 함수를 사용하면 .replaceAll() 함수와 유사한 기능을 구현할 수 있습니다. 이 함수를 사용할 때는 대체할 문자열이 정규식 표현이 아니라면 문자열을 직접 입력하는 것이 좋습니다. 그렇지 않으면, 잘못된 문자열이나 정규식으로 인식될 수 있으며 예상치 못한 결과가 발생할 수 있습니다.
결론적으로, 자바스크립트에서는 .replaceAll() 함수가 없기 때문에 이 함수를 사용할 경우 replaceAll is not a function 오류가 발생합니다. 대신에 .replace() 함수를 사용해야 하며, 정규식을 활용하여 전체 문자열을 바꿀 수 있습니다. 이를 유념하면서 자바스크립트 코드를 작성하는 것이 검색 엔진 최적화에 도움이 될 것입니다.
반응형
Comments