이 글은 주로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!