> Le 13 oct. 2016 à 19:20, Bob Myers <r...@gol.com> a écrit : > > Why is this needed? Why are people trying to get the property of an object > which is null? Why is the object null in the first place?
This is not about trying to get something from null, but about taking different paths according to when a reference is null or not without needing to assign to temporary variables, writing complete `if` structures, and/or repeating oneself. > (...) > > Just as an example, consider the following idiom for null propagation: > > ``` > a ? a.b ? a.b.c : undefined : undefined > ``` > > We can leverage this pattern by allowing the `:` in the ternary operator to > be omitted (defaulting to undefined), allowing us to write: > > ``` > a ? a.b ? a.b.c > ``` > > Whether you love it or hate it, at least this solves more problems that just > null propagation. I'm not seriously suggesting this. I'm just saying we need > to be more creative in brainstorming possible solutions to the problem. You can already write`a && a.b && a.b.c` in JS... but you still have to repeat `a` thrice and`b` twice, which is an issue if `a` and `b` are complex or lengthy expressions. Sometimes I am tempted to write something in the lines of `(_ = a.b) && _.c` in order to avoid the issue, but it is less readable. Here is a more complex although somewhat contrived example: If an <input> element named "foo" is inside a <details> section, open the latter in order to reveal the former: ```js document.querySelector("input[name=foo]")?.closest(".details")?.open = true ``` (The short-circuiting mechanism, which is an important part of the semantics in my proposal, ensures that the assignment is performed only when the expressions just before the `?`s are not null/undefined.) —Claude _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss