相等操作符 == 和 ===

x 和 y 如果是同类型,js比较他们的值或者对象值,其他情况就会返回false

toNumber 方法对不同类型返回的结果如下:

值类型结果
undefinedNaN
null0
布尔值如果是true,返回1;若为false,返回0
数字数字对应的值
字符串

将字符串解析成数字,如果字符串包含字母,返回NaN;

如果是由数字字符组成,转换成数字

对象Number (toPrimitive(obj))

toPrimitive 方法对不同类型返回的结果如下:

值类型结果
对象

如果对象的valueOf 方法的结果是原始值,返回原始值;如果对象的

toString 方法返回原始值,就返回这个值,其他情况都返回一个错误

  

一些小例子:

console.log('singledog'? true:false); //true

console.log('singledog' == true)//false---因为布尔值被toNumber转化成数字1,'singledog' 用
                                //toNumber 转成NaN(因为字符串内有字母),判断 NaN == 1

console.log('singledog' == false)//false ---因为 最终判断 NaN == 0 ,所以false

 === 操作符 ,比较两个值类型不同,返回false,若类型相同则按照以下表格判断

类型x类型y结果
数字x 和 y 数值相同,但不是NaNtrue
字符串x和y是相同的字符true
布尔值x和y同时为 true 或者同时为 falsetrue
对象x 和 y 引用同一个对象true

比如:

let person1 = { name: 'Pony '};
let person2 = { name: 'Pony '};
console.log(person1 === person2) //false 因为这是两个不同的对象

 

**各种数值类型转换成 布尔值:**
undefined 和 null 转换成 布尔值都是 false
布尔值: true 是 true ,false 是 false;
数字: +0, -0 和NaN 都是转换成 false,其他的数字都是true
字符串: 空字符串转换成 false,其他的字符串都是true
对象: 转换成布尔值都是 true

例子:

```
function testTrue(val){
    return val ? console.log('true') : console.log('false);
}
testTrue(true); // true
testTrue(false); // false
testTrue(new Boolean(false));// true ----对象转换成布尔值始终为true

testTrue(‘ ’); //false ----空字符串false
testTrue('false'); //true
testTrue(new String(' ')); //true 创建的是字符串对象,对象皆 true

testTrue(1); //true
testTrue(-1); // true
testTrue(NaN); //false
testTrue(new Number(NaN)); // true 创建的是 数字对象,true
testTrue(0); // false

testTrue({}); // true 对象皆为true
let obj = {
    name: ' Pony '
};
testTrue(obj);// true
testTrue(obj.name); // true
testTrue(obj.age); //false 因为obj.age不存在

```

至于类型转换,可以查看网上的教程:JavaScript类型转换

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值