前端招聘 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

相关推荐

10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
宇智波爱学习:我还没收到笔试
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务