[javascript] var.replace는 함수가 아닙니다

Javascript에서 문자열을 자르려고 아래 코드를 사용하고 있지만 제목에 언급 된 오류가 발생합니다.

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

편집하다:

문제를 해결했습니다 …. 죄송합니다. 코드를 어떻게 호출했는지에 대한 코드를 넣어야합니다 …. 실수로 양식 필드 자체의 객체가 값 대신 전달되는 것을 깨달았습니다.



답변

내 생각에는 trim함수를 호출하는 코드가 실제로 문자열을 전달 하지 않는 것입니다.

이 문제를 해결하려면, 당신은 할 수 있습니다 str이 같은 문자열을 : str.toString().replace(...)
…로 alper은 아래 지적했다.


답변

가능한 문제 :

  • 변수는 문자열이 아닌 NUMBER입니다 .

    num=35; num.replace(3,'three'); =====> ERROR

    num=35; num.toString().replace(3,'three'); =====> CORRECT !!!!!!

    num='35'; num.replace(3,'three'); =====> CORRECT !!!!!!
  • 변수는 문자열이 아닌 객체입니다 .
  • 변수가 정의되지 않았습니다.

답변

바꾸기는 숫자를 대체하지 않습니다. 문자열 만 바꿉니다.

이 작동합니다.

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'

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

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


답변

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

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