繁体   English   中英

JavaScript逻辑或无效分配

[英]JavaScript Logical OR invalid assignment

我试图了解JavaScript的逻辑OR运算符的工作方式,并试图重新创建我在书中阅读的代码,但又有所不同,但是在尝试运行代码时始终出现参考错误。

function add(a,b) {
   b || b = 1;
   return a+b;
}

我的理解是,如果左操作数为false,则将评估右操作数,然后将返回或使用右操作数的值。 在上面的代码中,我要尝试的是调用函数且省略第二个参数时,它将使用默认值1作为方程式的第二个值,但是我不断收到指出无效的参考错误左手作业。

可能您想实现以下目标:

b = b || 1;

尝试b || (b = 1) b || (b = 1)代替。 这也正是CoffeeScript为其||=运算符生成的。

问题在于运算符的优先级 分配=优先级低于布尔或|| 因此

b || b = 1

被解释为

(b || b) = 1

无效,因为您无法分配给表达式。 要实现您想要的功能,您必须告诉JS您想要的|| 首先然后=

b || (b = 1)

但更常见的表达方式是

b = b || 1

在函数的上下文中,这可能无法按预期方式工作,因为0是有效的整数值,并且您的代码会将其视为false并将其替换为1 因此,正确但正确的方法是编写函数

 function add(a, b) {
    b = (typeof b == "undefined") ? 1 : b;
    return a + b;
 } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM