JavaScript에서 var가 문자열인지 확인하려면 어떻게 해야 합니까?
JavaScript에서 var가 문자열인지 확인하려면 어떻게 해야 합니까?
이거 해봤는데 안 되네...
var a_string = "Hello, I'm a string.";
if (a_string typeof 'string') {
// this is a string
}
아슬아슬했어:
if (typeof a_string === 'string') {
// this is a string
}
관련 참고: 위의 체크는 문자열이 다음 문자열로 작성되면 작동하지 않습니다.new String('hello')
그런 타입이겠지만Object
대신.이 문제를 해결하기 위한 복잡한 해결책이 있지만, 그런 식으로 줄을 만드는 것은 피하는 것이 좋습니다.
연산자는 infix가 아닙니다(따라서 예제의 LHS는 의미가 없습니다.
이렇게 써야 되는데...
if (typeof a_string == 'string') {
// This is a string.
}
기억하세요.typeof
함수가 아닌 연산자입니다.그럼에도 불구하고, 당신은 알게 될 것이다.typeof(var)
야생에서 많이 쓰이고 있어요.이것은 이치에 맞다var a = 4 + (1)
.
또, 다음의 것을 사용해 주세요.==
(비교 연산자) 양쪽 오퍼랜드가String
s (typeof
항상 a를 반환한다.String
), JavaScript는 사용했을 때와 같은 절차를 실행하도록 정의되어 있습니다.===
(비교 연산자).
Box9에서 언급한 바와 같이 인스턴스화된 것은 검출되지 않습니다.String
물건.
그것을 검출할 수 있는 것은…입니다.
var isString = str instanceof String;
...혹은...
var isString = str.constructor == String;
하지만 이것은 멀티에서는 동작하지 않습니다.window
환경(생각)iframe
s)
당신은 이 문제를 해결할 수 있어요...
var isString = Object.prototype.toString.call(str) == '[object String]';
하지만 (Box9이 언급했듯이) 리터럴을 사용하는 것이 좋습니다.String
형식을 지정합니다.var str = 'I am a string';
.
상세 정보.
위의 답변을 조합하면 다음과 같은 해결 방법을 얻을 수 있습니다.
if (typeof str == 'string' || str instanceof String)
또는
Object.prototype.toString.call(str) == '[object String]'
다음 식은 true를 반환합니다.
'qwe'.constructor === String
다음 식은 true를 반환합니다.
typeof 'qwe' === 'string'
다음 식은 false를 반환합니다(sic!).
typeof new String('qwe') === 'string'
다음 식은 true를 반환합니다.
typeof new String('qwe').valueOf() === 'string'
최선의 올바른 방법(imho):
if (someVariable.constructor === String) {
...
}
요즘은 type of()의 함수 형식을 사용하는 것이 좋다고 생각합니다.
if(filename === undefined || typeof(filename) !== "string" || filename === "") {
console.log("no filename aborted.");
return;
}
모든 경우 a_string에서 null 또는 정의되지 않았는지 확인합니다.
if (a_string && typeof a_string === 'string') {
// this is a string and it is not null or undefined.
}
모든 경우에 효과가 있는 것처럼 보이는 나의 개인적인 접근법은 오직 현에만 존재하는 멤버의 존재 여부를 테스트하는 것이다.
function isString(x) {
return (typeof x == 'string' || typeof x == 'object' && x.toUpperCase && x.substr && x.charAt && x.trim && x.replace ? true : false);
}
참조: http://jsfiddle.net/x75uy0o6/
이 방법에 결함이 있는지 알고 싶지만, 몇 년 동안 도움이 많이 되었습니다.
언급URL : https://stackoverflow.com/questions/6286542/how-can-i-check-if-a-var-is-a-string-in-javascript
'programing' 카테고리의 다른 글
공유 테이블 구조를 가진 멀티 테넌트(Multi-tenant) 데이터베이스를 작성하려면 어떻게 해야 합니까? (0) | 2022.10.02 |
---|---|
"new" 연산자를 사용하여 개체를 만들 때 괄호를 생략할 수 있습니까? (0) | 2022.10.02 |
PHP 재귀 함수가 있는 디렉터리의 모든 파일 및 폴더 나열 (0) | 2022.10.02 |
인덱싱이 'C'에서 0으로 시작하는 이유는 무엇입니까? (0) | 2022.10.02 |
오류: 오류 1005: 테이블을 만들 수 없습니다(errno: 121) (0) | 2022.10.02 |