Logical assignment ב-V8
-
מכירים את זה?
data = data || data
מעכשיו
data ||= data
חבל שזה לא קיים עם מערכים.
-
@yossiz אמר בLogical assignment ב-V8:
@אהרן אמר בLogical assignment ב-V8:
חבל שזה לא קיים עם מערכים.
כלומר?
שיוכלו לעשות מיד push.
-
@אהרן לצערי עדיין לא הבנתי כוונתך... אולי יש לך דוגמה לתחביר שהיית רוצה? או לדבר שאתה מחפש לחסוך?
אגב, למי שלא היה לו כח לקרוא את הכתבה, יש הבדל קטן בין:
data = data || data
ל-data ||= data
.
בראשון ה-assignment (השמה?) קורה בכל מקרה. בשני זה קורה רק אםdata
הוא לא truthy.
נפק"מ כאשר יש תוצאה צדדית של ה-assignment כמו במקרה שלElement.innerHTML
אז לשם הדיוקdata ||= data1
שווה ל-data || (data = data1)
-
@dovid אמר בLogical assignment ב-V8:
אני חושב שהוא מתכוון ל
var arr = null; arr = arr || []; arr.push(123)
אני חושב שאין סיבה שלא יעבוד ככה:
(arr ||= []).push(123);
אני חושב לאט, אבל בסוף זה מגיע..
התכוונתי ל
newData || arr.push(newData)בעיקר הדברים האלו שימושיים כשמגיע דאטה לא צפוי, כמו מהשרת ולפעמים מה-DB.
וכששמות המשתנים ארוכים, זה ממש מיקל
res.data.longNameVar