>  기사  >  웹 프론트엔드  >  JS의 바꾸기() 메서드에서 발생하는 문제

JS의 바꾸기() 메서드에서 발생하는 문제

小云云
小云云원래의
2018-01-04 13:27:101703검색

이 글은 주로 JS에서 Refresh() 메소드를 사용할 때 발생하는 문제를 요약하여 소개합니다. 필요한 친구들이 참고하면 도움이 될 것입니다.

오늘 PC 클라이언트용 자동화 패키징 스크립트를 작성할 때 몇 가지 문제가 발생했지만 사소한 문제였지만 한동안 막혀서 기록해 보기로 했습니다.

js의 replacement() 메소드는 특정 콘텐츠를 대체하는 데 사용됩니다. 첫 번째 매개변수는 대체할 정규 표현식 객체이거나 문자열이고, 두 번째 매개변수는 대체할 콘텐츠일 수 있습니다. 함수에서 대체할 콘텐츠는 문자열이어야 합니다. 실행 중에 발생한 오류는 정의되지 않은 'replace' 속성을 읽을 수 없습니다. 구체적인 코드는 다음과 같습니다.

var fs=require("fs")
var infoPlistFile = osxFolder + '/Contents/Info.plist';
var infoPlist = fs.readFile(infoPlistFile);
fs.writeFile(infoPlistFile, infoPlist.replace(/Pexip Infinity Connect/gm, $scope.manifest.name));

이 코드를 실행했을 때 보고된 오류는 정의되지 않은 속성 대체를 얻을 수 없다는 것입니다. 처음에는 문제가 어디에 있는지 알지 못해서 대체된 파일을 인쇄해 보았습니다. infoPlist를 검색해 보니 null인 것을 발견하고 infoPlist를 정의하는 데 문제가 있다는 것을 알았습니다. fs.readFileSync로 변경한 후 그런 오류는 없었지만 새로운 오류가 발생했습니다. 교체는 함수가 아닙니다

관련 정보를 검색해 보니 해당 변수가 문자열이 아니라 다른 타입이라 infoPlist 타입으로 출력했는데, 출력된 것은 object라서 문제가 있는 게 infoPlist 타입이거든요. 틀리면 오류가 보고되서 문자열로 처리하는 연산을 추가했거든요

var infoPlistFile = osxFolder + '/Contents/Info.plist';
var infoPlist = readFile(infoPlistFile).toString();
writeFile(infoPlistFile, infoPlist.replace(/Pexip Infinity Connect/gm, $scope.manifest.name));

게다가 테스트용 데모를 작성할 때 받을 변수가 없으면, 다음과 같이 replacement() 메소드가 작동하지 않습니다.

var str="Hello World";
str.replace(/World/g, "dxy");
console.log(str);

지금 인쇄된 문자열은 여전히 ​​"Hello World"이므로 대체할 수 없습니다. 원래 변수를 대체하려면 여기에서 변수를 수신자로 사용해야 합니다. 예:

var str="Hello World";
var a=str.replace(/World/g, "dxy");
console.log(a);

이때 인쇄된 결과는 "Hello dxy"입니다.

요약: 이번에는 replacement() 메소드를 사용할 때 다음과 같은 문제를 발견했습니다.

1.replace() 메소드를 사용할 때 먼저 null 또는 정의되지 않은 유형의 변수에 대해 호출할 수 없는지 확인하십시오. 여기에 판단을 추가하고 변수에 값이 있는 경우에만 메서드를 호출할 수 있습니다.

2.replace() 메소드를 실행할 때 변수는 값을 가져야 할 뿐만 아니라 문자열 유형이어야 합니다.

3. JS는 자동으로 값을 할당하지 않습니다. 메소드를 실행하려면 메소드에서 직접 실행하거나 결과를 반환해야 합니다.

4. 첫 번째 매개변수가 정규식인 경우 따옴표를 추가할 수 없습니다.

관련 권장 사항:

Javascript의 replacement() 메서드 사용 예

ECSHOP에서 더 이상 사용되지 않음: preg_replace() 오류에 대한 솔루션

PHP의 str_replace() 함수 사용 소개 문자열 교체

위 내용은 JS의 바꾸기() 메서드에서 발생하는 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.