javascript隐式数据类型转换

本文探讨了JavaScript中的隐式数据类型转换,通过示例解释了如何在加法运算和相等比较中发生类型转换。同时提到了显式数据类型转换,如使用String函数进行转换,并指出`object`类型转换为`boolean`总是为`true`。

javascript隐式数据类型转换

隐式数据类型转换

  • 举个栗子
let a = 3;
console.log(a+true);//结果为:4
  • 上面的两行代码是一个很简单的js代码,a是一个数值型的变量,我们把a赋值为3,true是一个boolean类型的值,按照其他语言,“a+true”是一条错误的代码,但是在js里,我们输出了结果为4。我们并没有对true进行类型转换,但是js语言把它转换为数字类型。这种行为就叫做隐式数据类型转换。
  • 再举一个栗子
function test() {
    let obj1 = new String('123');
    let obj2 = '123';
    console.log(obj1 == obj2);//结果为:true
}
test();
  • 这样的结果同样是因为“==”运算会进行隐式数据类型转换,所以进行隐式数据类型转换的等值运算结果为true。
  • 再举一个栗子
function test() {
    function test() {
        let obj1 = new String('123');
        let obj2 = '123';
        console.log(obj1 === obj2);//结果为:false
    }
    test();
}
test();
  • 同样的赋值语句但是“===”运算和“==”运算就是完全不一样的。“===”运算是不进行隐式数据类型转换的。所以,不进行数据类型转换的等值运算结果为false。

常见的隐式数据类型转换的栗子

  • (1)
function first(){
    let a = "2";
    let b = a - 1;
    let c = a - "1";
    let d = a - '';
    let e = +a;
    console.log(typeof b);//结果为:number
    console.log(typeof c);//结果为:number
    console.log(typeof d);//结果为:number
    console.log(typeof e);//结果为:number
}
  • (2)
function second(){
    let a = 3;
    let b = a + '';
    let c = a + 'foo';
    console.log(typeof b);//结果为:string
    console.log(typeof c);//结果为:string
}
  • 值得注意的是:object类型转换为boolean型
function third(){
    let a = new Booleanfalse);
    if(a){
        console.log("T");
    }else{
        console.log("F");
    }
    //结果为:T
    let b = new Boolean(0);
    if(b){
        console.log("T");
    }else{
        console.log("F");
    }
    //结果为:T
}
  • 由此可以看出来,object类型转换为boolean类型后,结果必然为true。
  • 关于转换为boolean类型的不常见的栗子:!运算是逻辑非运算符,在操作数不是boolean类型时将其转换为boolean类型。所以用”!!“来表示双重否定,就能将值转换为boolean类型。
function tourth(){
    let a = !!1;
    console.log(typeof a);//结果为:true
}

显式数据类型转换

  • 与隐式数据类型转换相对应的是显式数据类型转换
  • 举个栗子
function test() {
    function test() {
        let a = 123;
        let str = String(a);
        console.log(typeof a);//结果为:number
        console.log(typeof str);//结果为:string
    }
    test();
}
test();
  • 在这段代码里,a是一个数值型变量,但是str就是字符串型变量。一般来说使用String函数是为了进行显式的数据类想转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值