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

相关推荐

09-09 21:23
门头沟学院 Java
程序员牛肉:小牛肉来也! 主要就是没有实习经历。因为你的投递方向肯定是中小厂。在小厂中,很少会有公司愿意花钱培养你。因此会更加青睐有实习的同学。再加上你的学历比较差一点,所以找不到是正常的。 跟简历项目啥的已经没有大关系了,就是差一份实习。秋招和日常实习一起投递吧。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务