source

var.replace가 함수가 아닙니다.

nicesource 2023. 10. 16. 21:54
반응형

var.replace가 함수가 아닙니다.

아래 코드를 사용하여 자바스크립트에서 문자열을 다듬으려고 하는데 제목에 오류가 발생합니다.

function trim(str) {
    return str.replace(/^\s+|\s+$/g,'');
}

편집:

문제를 해결했습니다. 죄송합니다. 제가 어떻게 부르는지 코드를 입력했어야 합니다.제가 실수로 폼 필드의 가치가 아닌 오브젝트 자체를 통과하고 있다는 것을 깨달았습니다.

내 생각엔 당신의 전화번호가trim함수는 실제로 문자열을 전달하지 않습니다.

이것을 고치기 위해, 당신은 다음을 만들 수 있습니다.str다음과 같은 문자열이 있습니다.str.toString().replace(...)
...알퍼가 아래에서 지적한 바와 같이.

발생 가능한 문제:

  • 변수는 NUMBER입니다( 문자열 대신);
    num=35; num.replace(3,'three'); =====> ERROR
    num=35; num.toString().replace(3,'three'); =====> CORRECT !!!!!!
    num='35'; num.replace(3,'three'); =====> CORRECT !!!!!!
  • variable is object( 문자열의 instead);
  • 변수가 정의되지 않았습니다.

교체해도 숫자가 대체되지 않습니다.문자열만 바꿉니다.

이 정도면 될 겁니다.

function trim(str) {
    return str.toString().replace(/^\s+|\s+$/g,'');
}

끈만 다듬고 싶으시면.str.trim()을 간단히 사용할 수 있습니다.

문자열을 전달하지 않으면 다음과 같은 문제가 발생합니다.replace방법.나는 당신이 타자를 치지 않았기를 바랍니다.function trim(str) { return var.replace(blah); }대신에return str.replace.

기능을 실제로 실행하기 전에 몇 가지 검증을 수행해야 할 것입니다.

function trim(str) {
    if(typeof str !== 'string') {
        throw new Error('only string parameter supported!');
    }

    return str.replace(/^\s+|\s+$/g,'');
}

당신의 기능을 제대로 호출했습니까?즉 매개 변수로 전달하는 것이 정말 문자열입니까?

그렇지 않으면 코드에 문제가 없다고 봅니다. 아래 예제는 예상대로 작동합니다.

function trim(str) {
    return str.replace(/^\s+|\s+$/g,'');
}


trim('    hello   ');  // --> 'hello'

그러나 문자열이 아닌 것으로 함수를 호출하면 실제로 위의 오류가 발생합니다.

trim({});  // --> TypeError: str.replace is not a function

숫자의 경우 문자열로 변환할 수 있습니다.

var stringValue = str.toString();
return stringValue.replace(/^\s+|\s+$/g,'');

replace 메서드는 문자열 함수이므로 string() method of java 스크립트를 string으로 변환하기 전에 사용해야 합니다.

문제를 해결했습니다. 죄송합니다. 제가 어떻게 부르는지 코드를 입력했어야 합니다.제가 실수로 폼 필드의 가치가 아닌 오브젝트 자체를 통과하고 있다는 것을 깨달았습니다.

어쨌든 당신의 답변에 감사드립니다.:)

"바꾸기" 메서드에 문자열을 전달하는지 확인합니다.같은 문제가 있어서 문자열을 넘겨서 해결했습니다.toString() 메서드를 사용하여 문자열로 만들 수도 있습니다.

언급URL : https://stackoverflow.com/questions/4775206/var-replace-is-not-a-function

반응형