![](/img/trans.png)
[英]How to implement the logical assignment in destructuring assignment in 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.