前端招聘 js 编程

(function foo(value){
alert(value)//test
switch(value){
case new String("test"):
console.log("String(\"test\")");
break;
case "test":
console.log("string test");
break;
default:
console.log("default");
}
})(new String("test"));

答案是default 是为什么
#前端工程师#
全部评论
传入的value是一个字符串对象。第一个:一个对象除非跟自己的浅拷贝进行比较相等,否则即使一摸一样的两个对象也不会向灯,因此不符合;第二个:对象不等于字符串,也不符合。所以最后就是default结果。 像这种题自己试试印象会比较深。 //输入 var str1 = new String("test"); var str2 = new String("test"); var str3 = str2; console.log(str1); console.log(str1 == str2); console.log(str3 == str2); //输出 String {0: "t", 1: "e", 2: "s", 3: "t", length: 4, [[PrimitiveValue]]: "test"} false true
点赞 回复 分享
发布于 2016-10-11 16:12
switch使用的是===做比较,两个字符串包装对象不是同一个对象
点赞 回复 分享
发布于 2016-10-11 15:40

相关推荐

牛客279957775号:铁暗恋
点赞 评论 收藏
分享
11-15 18:39
已编辑
西安交通大学 Java
全村最靓的仔仔:卧槽,佬啥bg呢,本也是西交么
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务