前端招聘 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
联想
校招火热招聘中
官网直投

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务