您的位置:首页 > Web前端 > JavaScript

[JavaScript] 三等双等的奥秘

2014-05-02 16:24 357 查看
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()转换成原始类型再进行比较 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: