运算符那些事

转自别人的解释
输出以下代码运行结果

1 + "1"
2 * "2"
[1, 2] + [2, 1]
"a" + + "b"

1 + "1"
加性操作符:如果只有一个操作数是字符串,则将另一个操作数转换为字符串,然后再将两个字符串拼接起来
所以值为:“11”

如果操作数是数字加undefined,那么结果就是NAN
如果操作数是两个字符串,就执行字符串相连操作

2 * "2"
乘性操作符:如果有一个操作数不是数值,则在后台调用 Number()将其转换为数值
所以值为4

[1, 2] + [2, 1]
Javascript中所有对象基本都是先调用valueOf方法,如果不是数值,再调用toString方法。2与2之间没有逗号,可以直接相连。
所以两个数组对象的toString方法相加,值为:"1,22,1"

"a" + + "b"
后边的“+”将作为一元操作符,如果操作数是字符串,将调用Number方法将该操作数转为数值,如果操作数无法转为数值,则为NaN。第一个+操作符则会承担连接字符串作用。
所以值为:"aNaN"


9.22二更

关于tosring(),valueOf()方法

var obj={
    valueOf(){
        return 'value'
    },
    toString(){
        return 'string'
    },
    get getname(){
        return 'getting'
    }
}
alert(obj)  //string
console.log(obj)  //{ valueOf: [Function: valueOf],toString: [Function: toString],get: [Function: get] }

几个问题:
1.为什么alertconsole.log输出不一样?

console.log() 可以打印任何类型的数据。而 alert() 只能输出string,如果alert输出是对象会自动调用 toString() 方法。如果想 console.log() 输出的与alert相同,需要调用 toString()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值