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