JavaScript 中,num = num || 1 这种写法有哪些优缺点?
加个括号看咯。num = (num || 1) ,num没值时默认值为1,还好吧,看你实际需要吧。
比if else 或switch简练而已
1,如果您的num在没有初始化的情况下,会将1赋值给this.num.这样做的好处就是在您调用时不会出现空指针异常、
2,就是代码简化了很多
个人觉得这种写法不是特别的常用。
首先从运算符优先级的角度考虑,=号的优先级是低于||运算符的。也就是说num||1会优先于赋值来执行。
那么这样做有什么好处呢?不妨这样理解。想象一下num为空值的时候,如果没有后面的||1,这个时候一个控制就会传给一个变量num。
很显然这是不正确的,那么加上了||1的好处呢?即使num是空值,由于|| 运算符会先得到执行。所以右边的表达式会得出一个1的值,然后复制给左边
的num。这个时候,原本为空值的num被赋予了1,也就是True的意思。在JavaScript这种弱类型的数据结构中,这样做可以优雅的解决空值引用的
错误。也算是JavaScript中的一个小技巧吧。
最后,来分享一个学习的小技巧,那就是带着问题去思考。会有一个更好的学习体验的,希望对你有用 :-)
(num || 1) 就是如果num为JavaScript中能表示false的变量,就将1作为num的初始值
JavaScript表示false的值有这些:
false
null
undefined
0
'' (空字符串)
NaN
主要是防止异常情况和报错,赋值之前先判断是否是想要的值,不是的话就用备用的值
arg1 = arg1 || 10; // 如果arg1没有被赋值,10将作为默认值;
还有其他用法
var foo = 10;
foo == 10 && doSomething(); //和这个一样: if (foo == 10) doSomething();
foo == 5 || doSomething(); // 和这个一样 if (foo != 5) doSomething();
只是一些小技巧,
没有所谓的优缺点,这个看个人喜欢,
js中有很多写法真是令人打开眼界。