![](/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.