84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
今天看到同事的一段代码,好生疑问,代码的逻辑是判断一个变量的值是否为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即可。
你这个属于偷鸡不成蚀把米。