[JavaScript] 三等双等的奥秘

function show(n1, n2, b) {
	b == true 
	? console.log(n1 + ' equal ' + n2) 
	: console.log(n1 + ' not equal ' + n2);
}

var a = new String('hi');
var b = new String('hi');

console.log('==');
	(a == b) 
? show(a, b, true) 
: show(a, b, false);

console.log('===');
	(a === b) 
? show(a, b, true) 
: show(a, b, false);


结果:

==
hi not equal hi
===
hi not equal hi


a:object对象 值为new String(‘hi')的引用

b:object对象 值为new String('hi')的引用


js中双等符号约定:如果2个变量的类型是一样的 则会调用三等符号的约定 即这里’==‘被隐式的转为’===‘


因此 2次结果都是 not equal



以下是js中双等和三等符号的约定:


===操作符: 
要是两个值类型不同,返回false 
要是两个值都是number类型,并且数值相同,返回true 
要是两个值都是stirng,并且两个值的String内容相同,返回true 
要是两个值都是true或者都是false,返回true 
要是两个值都是指向相同的Object,Arraya或者function,返回true 
要是两个值都是null或者都是undefined,返回true 
==操作符: 
如果两个值具有相同类型,会进行===比较,返回===的比较值 
如果两个值不具有相同类型,也有可能返回true 
如果一个值是null另一个值是undefined,返回true 
如果一个值是string另个是number,会把string转换成number再进行比较 
如果一个值是true,会把它转成1再比较,false会转成0 
如果一个值是Object,另一个是number或者string,会把Object利用 valueOf()或者toString()转换成原始类型再进行比较 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值