JavaScript 中,num = num || 1 这种写法有哪些优缺点?

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


javascript判断中为假false的值

主要是防止异常情况和报错,赋值之前先判断是否是想要的值,不是的话就用备用的值

 arg1 = arg1 || 10; // 如果arg1没有被赋值,10将作为默认值;

还有其他用法

var foo = 10;    
foo == 10 && doSomething(); //和这个一样: if (foo == 10) doSomething();  
foo == 5 || doSomething(); // 和这个一样 if (foo != 5) doSomething();  

只是一些小技巧,

没有所谓的优缺点,这个看个人喜欢,

js中有很多写法真是令人打开眼界。