簡體   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