There are already official proposals for those. See:

https://github.com/tc39/proposals <https://github.com/tc39/proposals>

and search for “Nullish coalescing Operator” for the first of your suggestions 
and “Optional Chaining” for the second one.

—Claude



> Le 20 déc. 2017 à 09:03, Arash Motamedi <[email protected]> a écrit :
> 
> I’d like to propose two new operators that I’ve appreciated using in C#, with 
> appropriate modifications for Ecmascript. 
> 
> ?? Null-Coalescing Operator
> 
> The ?? operator is called the null-coalescing operator. It returns the 
> left-hand operand if the operand is not null or undefined; otherwise it 
> returns the right hand operand. (modified excerpt from C# definition, here 
> <https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operator>.)
>   
> 
> Examples:
>  
> let u = undefined;
> let nu = u ?? 0; 
> //  nu = (u !== undefined && u !== null) ? u : 0
> 
> let n = null;
> let nn = n ?? "Default"; 
> //  nn = (n !== undefined && n !== null) ? n : "Default";
> 
> let p = someObj.someProp ?? "Hello"; 
> //  p = (someObj.someProp !== undefined && someObj.someProp !== null) ? 
> someObj.someProp : "Hello";
> 
> The ?? operator allows for a very terse syntactic representation of a rather 
> common statement, and its value becomes very clear when evaluating and 
> accessing properties on objects, as illustrated in the 3rd example above. For 
> credit, comparison, and further details, please review the C# null coalescing 
> operator information here 
> <https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operator>.
>  
> 
> 
> ?. Null Conditional Member Access and ?[ Null Conditional Index Access
> 
> Used to test for null or undefined before performing a member access (?.) or 
> index (?[) operation. (modified excerpt from C# definition here 
> <https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operators>.)
>  
> 
> Examples:
>  
> let n = null;
> let nn = n?.name; 
> //  nn = (n.name <http://n.name/> !== null && u.name <http://u.name/> !== 
> undefined) ? u.name <http://u.name/> : u.name <http://u.name/>;
> 
> let p = {name: "John"};
> let l = p.lastName?.length; 
> //  l = (u.lastName !== null && u.lastName !== undefined) ? u.lastName.length 
> : u.lastName;
> 
> The ?. and ?[ operators allow for graceful access (as opposed to 
> null/undefined reference errors) to object members, and are particularly 
> useful when used in a chained manner. For credit, comparison, and further 
> details, please review the C# null conditional member access operator 
> information here 
> <https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/null-conditional-operators>.
>  
> 
> 
> Combining the above operators can enable very concise syntax for checking 
> against null/undefined and providing default values in a graceful manner. 
> 
> let lastNameLength = person.lastName?.length ?? 0; 
> let cityToUppercase = person.address?.city?.toUpperCase() ?? "N/A"; 
> 
> 
> Looking forward to working with the community and hopefully bringing these 
> two operators to the language. 
> 
> Best,
> Arash
> 
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to