[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()转换成原始类型再进行比较
相关文章推荐
- 【初窥javascript奥秘之Ajax】简述下你所知道的Ajax?
- 【初窥javascript奥秘之事件冒泡】那些年我们一起冒的泡
- javascript中负数算术右移、逻辑右移的奥秘
- 【初窥javascript奥秘之面向对象】封装与继承
- javascript中负数算术右移、逻辑右移的奥秘探索
- 【初窥javascript奥秘之事件机制】论“点透”与“鬼点击”
- 探索Javascript中this的奥秘
- 【初窥javascript奥秘之让人捉摸不定的this】你知道现在this指向哪里吗???
- 探索Javascript中this的奥秘
- 【初窥javascript奥秘之面向对象】封装与继承
- JavaScript奥秘之让人捉摸不定的this
- 【初窥javascript奥秘之Ajax】简述下你所知道的Ajax?
- 【初窥javascript奥秘之事件冒泡】那些年我们一起冒的泡
- 【初窥javascript奥秘之Ajax】简述下你所知道的Ajax?
- 【初窥javascript奥秘之让人捉摸不定的this】你知道现在this指向哪里吗???
- Javascript------this的奥秘
- javascript中负数算术右移、逻辑右移的奥秘探索
- 【初窥javascript奥秘之闭包】叶大侠病都好了,求不踩了:)
- javascript中负数算术右移、逻辑右移的奥秘探索