2016-09-22 2 views
3

아무도 아래의 스위치가 작동하지 않는 이유를 말할 수 있습니까?문자열 변수가 작동하지 않는 JavaScript 스위치

var String=new String('String #1'); 

document.write(String); 

document.write(' Check '); 

switch(String) 
{ 

    case 'String #1' : 
    document.write('String Number 1'); 
    break; 
    default: document.write('wrong string'); 
} 

는 출력이된다

+1

가 왜 문자열에게 내장 함수 이름을 이름 않았다 예를 참조하십시오? – Li357

+1

^'String은 생성자가 아닙니다 .' 오류가 발생합니다. – adeneo

+0

a)'String' 인스턴스를 생성하지 마십시오. b)'String'을 덮어 쓰지 않습니다. c)'String' 객체를'switch '하지 마십시오. – Bergi

답변

2

개체와 Object가 아닌 String이 아닌 개체를 비교해야합니다. 나는 여기 객체와 객체를 비교 :

var string = "String #1"; 
console.log(string); 
console.log("Check"); 

switch(string) 
{ 
    case "String #1": 
    console.log("String Number 1"); 
    break; 
    default: console.log("wrong string"); 
} 
+1

수정 "여기에 문자열을 문자열과 비교하고 있습니다":) –

3

문자열은 자바 스크립트에 내장 것 생성자입니다 문자열 # 1 체크 잘못된 문자열입니다.

TypeError: String is not a constructor 

String 변수의 이름을 변경하고 문자열 인스턴스를 가지고 있기 때문에 여기에 switch 문을 사용하지 않는 :이 생성자 그림자 명명 변수는 오류가 발생합니다. switch 문은 MDN documentationECMAScript 2015 specification에 따라 엄격한 비교 (===)를 사용합니다. 문자열 인스턴스와 리터럴은 절대로 '엄격하게 동일'하지 않으므로 비교가 실패합니다. 인스턴스화하지 말고, 대신 문자를 사용

var string = "String #1"; 
 

 
switch(string) { 
 
    case "String #1": 
 
    document.write("String Number 1"); 
 
    break; 
 
    default: 
 
    document.write("wrong string"); 
 
}

또한, 나는 document.write을 사용하지 않는 것이 좋습니다, here를 참조하십시오. createElementappendChild으로 DOM에 로깅하거나 삽입하면 여기에서 충분히 작동합니다.

+0

조언 해 주셔서 감사합니다. 작동합니다 : var String = 'String # 1'; 문제없이 작동해야합니다. - torazaburo 56 분 전 다른 옵션들도 점검 할 것입니다. – Emile

1

당신은 toString()를 사용하여 객체를 문자열로 변경할 수 있습니다 https://jsfiddle.net/DIRTY_SMITH/59x9xn3g/1/

<script> 
var someObject =new String('String #1'); 
var someString = someObject.toString(); 
document.write(someString); 

document.write(' Check '); 

switch(someString) 
{ 

    case 'String #1' : document.write('String Number 1'); 
    break; 
    default: document.write('wrong string'); 
} 
</script> 
+0

잘 작동합니다. – Emile