JS的类型转换

先来看看数据类型基础相关的两道面试题和答案

//类型转换相关问题
var bar=true;
console.log(bar+0);
console.log(bar+"xyz");
console.log(bar+true);
console.log(bar+false);
console.log('1'>bar);
console.log(1+'2'+false);
console.log('2' + ['koala',1]);

var obj1 = {
   a:1,
   b:2
}
console.log('2'+obj1);

var obj2 = {
    toString:function(){
        return 'a'
    }
}
console.log('2'+obj2)

//输出结果  1 truexyz 2 1 false 12false 2koala,1 2[object Object] 2a

//作用域和NaN 这里不具体讲作用域,意在说明NaN
var b=1;
function outer(){
    var b=2;
    function inner(){
        b++;
        console.log(b);
        var b=3;
    }
    inner();
}
outer();
//输出结果 NaN

js中的强制转换规则

Number

Number运算符转换规则:

  • null 转换为 0
  • undefined 转换为 NaN
  • true 转换为 1,false 转换为 0
  • 字符串转换时遵循数字常量规则,转换失败返回 NaN

字符串"123"可以转换为数字123

String

String 运算符转换规则

  • null 转换为 ‘null’
  • undefined 转换为 undefined
  • true 转换为 ‘true’,false 转换为 ‘false’
  • 数字转换遵循通用规则,极大极小的数字使用指数形式

Boolean

ToBoolean 运算符转换规则
除了下述 6 个值转换结果为 false,其他全部为 true:

undefined
null
-0
0或+0
NaN
‘’(空字符串)

假值以外的值都是真值。其中包括所有对象(包括空对象)的转换结果都是true,甚至连false对应的布尔对象new Boolean(false)也是true

Boolean(undefined) // false
Boolean(null) // false
Boolean(0) // false
Boolean(NaN) // false
Boolean('') // false

Boolean({}) // true
Boolean([]) // true
Boolean(new Boolean(false)) // true

NaN相关总结

NaN的概念
NaN 是一个全局对象的属性,NaN 是一个全局对象的属性,NaN是一种特殊的Number类型。

隐式类型转换

+隐式类型会转换成string
对象和数组是引用值,转换规则:内置valueOf toString 函数,进行+ 操作时 调用valueOf 返回结果是原始值,结束,返回结果不是原始值,继续调用toString方法
空数组转换后是一个空串
不同类型转换,一定会转换为数字后才比较 false == ‘0’
null
0 false undefined==0 false

显示类型转换

‘1’+5=15
对象和数组是引用值,转换规则:内置valueOf 和 toString 函数,进行+ ==操作时 调用valueOf 返回结果是原始值,结束,返回结果不是原始值,继续调用toString方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值