84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
今天看到同事的一段代码,好生疑问,代码的逻辑是判断一个变量的值是否为0:
var a; ........//对a的一些操作 if(a - 0 == 0){ ...... }
请问这种操作是某种黑科技还是同事多些了呢???求大神指导
一般来讲,js中的减号操作符的规则如下:
1、如果两个操作符都是数值, 则执行常规的算术减法操作,并返回结果。
2、如果有一个操作数是NAN, 则结果也是NaN。
3、如果有一个操作数是字符串、布尔值、null、undefined则先在后台调用Number()方法将其转换为数值, 然后在根据根据前面的规则进行减法计算,如果转换的结果是NaN, 则减法的结果就是NaN。
4、如果有一个操作数是对象,则调用对象的 valueof() 方法以取得该方法返回后的值,如果得到的值是NaN,则减法的结果就是NaN, 如果对象没有valueOf()方法,则调用其toString()方法并将得到的字符串转为数值。
以我的看法,你同事写的代码不仅没有炫技成功,语义化可读性不高,而且这段代码会有漏洞,遵循上面第三条规则,如果a = false ,则同样返回0,但是此时a并不为0。
是写多了,没什么用,最终都要变成布尔类型,先转成数字没必要。
完全是多余的。 js中的类型是可以相互转换的,你同事是一个后台程序员?
是否全等于0,直接a === 0即可。
你这个属于偷鸡不成蚀把米。
一般来讲,js中的减号操作符的规则如下:
1、如果两个操作符都是数值, 则执行常规的算术减法操作,并返回结果。
2、如果有一个操作数是NAN, 则结果也是NaN。
3、如果有一个操作数是字符串、布尔值、null、undefined则先在后台调用Number()方法将其转换为数值, 然后在根据根据前面的规则进行减法计算,如果转换的结果是NaN, 则减法的结果就是NaN。
4、如果有一个操作数是对象,则调用对象的 valueof() 方法以取得该方法返回后的值,如果得到的值是NaN,则减法的结果就是NaN, 如果对象没有valueOf()方法,则调用其toString()方法并将得到的字符串转为数值。
以我的看法,你同事写的代码不仅没有炫技成功,语义化可读性不高,而且这段代码会有漏洞,遵循上面第三条规则,如果a = false ,则同样返回0,但是此时a并不为0。
是写多了,没什么用,最终都要变成布尔类型,先转成数字没必要。
完全是多余的。 js中的类型是可以相互转换的,你同事是一个后台程序员?
是否全等于0,直接a === 0即可。
你这个属于偷鸡不成蚀把米。