首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字符串变量的Javascript开关不起作用

字符串变量的Javascript开关不起作用
EN

Stack Overflow用户
提问于 2016-09-23 00:33:20
回答 3查看 8.2K关注 0票数 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');
}

输出结果是: String #1检查错误的字符串

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-09-23 00:42:19

您必须将对象与对象进行比较,而不是将字符串与对象进行比较。这里我将一个对象与一个对象进行比较:

代码语言:javascript
运行
复制
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");
}
票数 3
EN

Stack Overflow用户

发布于 2016-09-23 00:36:49

String是一个内置到JavaScript中的构造函数。命名隐藏这些构造函数的变量将导致错误:

代码语言:javascript
运行
复制
TypeError: String is not a constructor

重命名String变量,不要在这里使用switch语句,因为您有一个String实例。switch语句对每个MDN documentationECMAScript 2015 specification使用严格比较(===)。因为字符串实例和文本永远不会“严格相等”,所以比较失败。不要实例化,而是使用文本:

代码语言:javascript
运行
复制
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中应该足够了。

票数 3
EN

Stack Overflow用户

发布于 2016-09-23 00:45:54

您可以使用toString()将对象更改为字符串请参见示例https://jsfiddle.net/DIRTY_SMITH/59x9xn3g/1/

代码语言:javascript
运行
复制
<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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39644393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档