<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Animesh</title>
    <description>The latest articles on DEV Community by Animesh (@animeshmaru).</description>
    <link>https://dev.to/animeshmaru</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F653034%2F293d1e30-c76b-4135-a9e0-8fcac8e34188.gif</url>
      <title>DEV Community: Animesh</title>
      <link>https://dev.to/animeshmaru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/animeshmaru"/>
    <language>en</language>
    <item>
      <title>Building a local-first multi-JSON workspace in the browser</title>
      <dc:creator>Animesh</dc:creator>
      <pubDate>Tue, 31 Mar 2026 19:41:56 +0000</pubDate>
      <link>https://dev.to/animeshmaru/building-a-local-first-multi-json-workspace-in-the-browser-3nfk</link>
      <guid>https://dev.to/animeshmaru/building-a-local-first-multi-json-workspace-in-the-browser-3nfk</guid>
      <description>&lt;p&gt;Most JSON formatters I’ve used only handle one JSON at a time.&lt;br&gt;
That becomes painful when you're working with multiple API responses or trying to compare payloads.&lt;/p&gt;

&lt;p&gt;I wanted something closer to a &lt;strong&gt;workspace&lt;/strong&gt;, not just a formatter — so I explored a local-first approach where everything runs entirely in the browser (no network calls).&lt;/p&gt;

&lt;h2&gt;
  
  
  What I focused on
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Working with &lt;strong&gt;multiple JSONs simultaneously&lt;/strong&gt; (like tabs)&lt;/li&gt;
&lt;li&gt;Keeping everything &lt;strong&gt;private and offline&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Adding a &lt;strong&gt;diff view&lt;/strong&gt; for comparing objects&lt;/li&gt;
&lt;li&gt;Handling &lt;strong&gt;large JSON files without freezing the UI&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Challenges I ran into
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Large JSON performance
&lt;/h3&gt;

&lt;p&gt;Rendering deeply nested objects can easily block the main thread.&lt;br&gt;
I had to be careful with parsing, virtualization, and avoiding unnecessary re-renders.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Diffing nested structures
&lt;/h3&gt;

&lt;p&gt;Simple diff algorithms break down with large or deeply nested JSON.&lt;br&gt;
Balancing accuracy vs performance was tricky.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Local storage limits
&lt;/h3&gt;

&lt;p&gt;Managing multiple JSONs locally isn’t trivial — especially when users paste large payloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Curious about others’ approaches
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How do you handle &lt;strong&gt;diffing large JSON objects efficiently&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;Any patterns for &lt;strong&gt;multi-document workflows in the browser&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;Better ways to manage &lt;strong&gt;large data in local-first apps&lt;/strong&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Would love to hear how others are solving these problems.&lt;/p&gt;

&lt;p&gt;My tool - &lt;a href="https://www.multijson.com" rel="noopener noreferrer"&gt;https://www.multijson.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fionubx9ot30oycoo8zr6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fionubx9ot30oycoo8zr6.png" alt="multijson.com" width="800" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>C++ Removed Features</title>
      <dc:creator>Animesh</dc:creator>
      <pubDate>Fri, 02 Jul 2021 17:15:44 +0000</pubDate>
      <link>https://dev.to/animeshmaru/c-removed-features-f86</link>
      <guid>https://dev.to/animeshmaru/c-removed-features-f86</guid>
      <description>&lt;p&gt;With the new version of C++17 many new functions introduced but some features are removed or deprecated.😊&lt;/p&gt;

&lt;p&gt;These are listed below :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removal of deprecated operator ++&lt;/li&gt;
&lt;li&gt;Removal of registers&lt;/li&gt;
&lt;li&gt;Removal of auto_ptr&lt;/li&gt;
&lt;li&gt;Trigraphs&lt;/li&gt;
&lt;li&gt;throw(typeid)&lt;/li&gt;
&lt;li&gt;Allocator support in std::function&lt;/li&gt;
&lt;li&gt;std::pointer_to_unary_function and 
std::pointer_to_binary_function&lt;/li&gt;
&lt;li&gt;std::binder1st and std::binder2nd&lt;/li&gt;
&lt;li&gt;std::bind1st and std::bind2nd&lt;/li&gt;
&lt;li&gt;Other functions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1.   REMOVAL OF DEPRECATED OPERATOR ++&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Postfix and prefix Increment (++) expressions are now not valid for &lt;strong&gt;bool&lt;/strong&gt; operands, since pre-fix and post-fix operator++ was overloaded for type bool but In both cases, the return value for a bool argument is true. The bool type does not support the full set of arithmetic types. Since from the launch of C++98 this change was much awaiting. In new version of C++17 it is no longer considered an arithmetic type and these operators have been deprecated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alternatives :&lt;/strong&gt; &lt;br&gt;
&lt;strong&gt;std::exchange&lt;/strong&gt; can be used as alternative for this, but only where post-fix operator has valid uses. Exchange function replaces the value of object with new value and returns the old value of object.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.    REMOVAL OF REGISTERS&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Long back, in C++11 register keyword was deprecated. Register keyword specifies or gives a hint to compiler that the variable can be put in a register for fast access or these variables might be heavily used so that it can do optimization by storing it in a CPU register. But compiler implicit do optimizations and hint was rarely used. Therefore in new version register keyword is removed, although keyword is still reserved for future versions.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;syntax :&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;register&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Bye Bye register :)"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Alternatives :&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;There is no alternative for register as compiler does the same work automatically. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.    REMOVAL OF AUTO_PTR&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;auto_ptr was used to create a smart pointer to handle an object’s lifetime.  It is owner of the object to which it refers, when an object gets destroyed auto_ptr also gets destroyed automatically. This smart pointer quietly steals ownership of the managed object in its copy constructor and copy assignment from the right-hand argument. As a result, the copy is not the same as the original smart pointer object. Because of these copy semantics, auto_ptr not works as CopyConstructible, and therefore it is deprecated. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alternatives :&lt;/strong&gt; &lt;br&gt;
auto_ptr can easily replaced by &lt;strong&gt;unique_ptr&lt;/strong&gt; which is also a smart pointer with similar working but with improved security. It was introduced in C++11 as direct replacement of auto_ptr as it provide new features (deleters) and support for arrays moreover it allows only one owner of the referencing pointer. So, while using unique_ptr there can only be at most one unique_ptr for one resource and when it is destroyed, the resource is automatically claimed. If we try to make a copy of unique_ptr will cause a compile-time error.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Example :&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt; &lt;span class="n"&gt;unique_ptr&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;p1&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt; &lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
 &lt;span class="n"&gt;unique_ptr&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;p2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;p1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
 &lt;span class="c1"&gt;// Error: can't copy unique_ptr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4.    TRIGRAPHS&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Trigraphs are group of three character basically, it is special character sequence which is used as alternative for some characters. Represented with two question marks.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;example :&lt;br&gt;
 ??- produces ~ &lt;br&gt;
 ??= produces #&lt;br&gt;
 ??/ produces \&lt;br&gt;
 ??’ produces ^&lt;br&gt;
 ??( produces [&lt;br&gt;
 ??) produces ]&lt;br&gt;
 ??! produces |&lt;br&gt;
 ??&amp;lt; produces {&lt;br&gt;
 ??&amp;gt; produces }&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;But they produce much confusion as they are parsed before comments and therefor removed in the latest version.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alternatives :&lt;/strong&gt; &lt;br&gt;
C++17 not provide any alternatives for Trigraphs, as modern keyboards have all this features moreover it produces a lot of bugs in code. &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nnkrcc3kixypm642opg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nnkrcc3kixypm642opg.gif" alt="C"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;5.    throw(typeid)&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;If a function is declared with type T listed in its exception specification, the function may throw exceptions of that type or a type derived from it. This is the non-throwing version of the dynamic exception specification hat has been deprecated and now removed. It has been replaced with &lt;strong&gt;noexcept&lt;/strong&gt; which has more clear meaning.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Syntax : &lt;br&gt;
throw(typeid, typeid, ...)&lt;br&gt;
example :&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;throwsInt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;throw&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="p"&gt;{&lt;/span&gt;  
    &lt;span class="n"&gt;cout&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="s"&gt;"throw function replaced with noexcept :)"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
    &lt;span class="p"&gt;{&lt;/span&gt; 
      &lt;span class="n"&gt;throw&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Alternatives :&lt;/strong&gt; &lt;br&gt;
As mentioned above, throw can have better alternative with noexcept. It specifies whether function could throw exceptions or not without specifying their type. But use it only when invocation of the function cannot throw any error, otherwise program will terminate. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6.    ALLOCATOR SUPPORT IN std::function :&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Several constructors allow to specify an allocator used for allocating internal memory. std::function also have constructors that take an allocator argument, but the semantics are unclear, and there are technical glitch with storing an allocator in a type-erased context and then recovering that allocator later for any allocations needed during copy assignment. Therefore, these constructor overloads were removed in C++17.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alternatives :&lt;/strong&gt; &lt;br&gt;
No such features is present in C++ which replaces allocator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7.   std::pointer_to_unary_function, std::pointer_to_binary_function :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;std::pointer_to_unary_function, std::pointer_to_binary_function function objects that act as wrappers around unary or binary functions. These functions contains constructor which constructs a new pointer_to_unary_function object with the supplied function and operator() which calls the stored function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alternatives :&lt;/strong&gt; &lt;br&gt;
These two functions  std::function and std::ref replaces std::pointer_to_unary_function, std::pointer_to_binary_function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8.    std::binder1st and std::binder2nd :&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;These are function object that binds an argument to a binary function.&lt;br&gt;
The value of the parameter is passed to the object at the construction time and stored within the object. Whenever the function object is invoked though operator(), the stored value is passed as one of the arguments, the other argument is passed as an argument of operator(). The resulting function object is an unary function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) binder1st  :&lt;/strong&gt;   Binds the first parameter to the value value given at the construction of the object.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) binder2nd  :&lt;/strong&gt;   Binds the second parameter to the value value given at the construction of the object.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alternatives :&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lambdas&lt;/strong&gt;, &lt;strong&gt;std::bind&lt;/strong&gt; are two features which can be alternatives for binder1st and binder2nd.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9.    std::bind1st and std::bind2nd :&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;These are  Helper functions that create instances of std::binder1st or std::binder2nd, which binds a given argument to a first or second parameter of a given binary function object. But these become no use with the introduction of lambdas in C++11, therefor they were deprecated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10   Other functions :&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;std::mem_fun_t&lt;/li&gt;
&lt;li&gt;std::mem_fun1_t&lt;/li&gt;
&lt;li&gt;std::const_mem_fun_t&lt;/li&gt;
&lt;li&gt;std::const_mem_fun1_t&lt;/li&gt;
&lt;li&gt;std::mem_fun_ref_t&lt;/li&gt;
&lt;li&gt;std::mem_fun1_ref_t&lt;/li&gt;
&lt;li&gt;std::const_mem_fun_ref_t&lt;/li&gt;
&lt;li&gt;std::const_mem_fun1_ref_t&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are function objects that wrap a pointer to a member function with no parameters or one parameter. The class instance whose member function to call is passed as a pointer to the operator() ie, the object whose member function to call is passed by pointer to the call operator for the latter, it is passed as a reference. They are deprecated because they are limited to member functions with either none or just one argument and you need different functions and function objects for handling pointers or references to the class instance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alternatives :&lt;/strong&gt; &lt;br&gt;
Alternative to above functions is &lt;strong&gt;std::mem_fn&lt;/strong&gt; which can handle member functions with any number of variables and not only references or pointers to objects but also smart pointers.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjdim9k4525gck7ko2hk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjdim9k4525gck7ko2hk.gif" alt="C"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Conclusion :&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;C++ is &lt;strong&gt;simple&lt;/strong&gt;, much &lt;strong&gt;clear&lt;/strong&gt; and provide &lt;strong&gt;faster&lt;/strong&gt; programming. Improving such language with latest versions and removing old buggy features is necessary. Thousands of proposals were put forward for updating the features in C++17. And it's time to say bye to some old features. 😎&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connect&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/animesh-maru/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/AnimeshMaru" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C++ Rocks!😄&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>news</category>
      <category>programming</category>
    </item>
    <item>
      <title>ECMAScript 2021 New Updates</title>
      <dc:creator>Animesh</dc:creator>
      <pubDate>Tue, 29 Jun 2021 11:01:17 +0000</pubDate>
      <link>https://dev.to/animeshmaru/ecmascript-2021-new-updates-1ie9</link>
      <guid>https://dev.to/animeshmaru/ecmascript-2021-new-updates-1ie9</guid>
      <description>&lt;p&gt;&lt;strong&gt;INTRODUCTION&lt;/strong&gt;😎&lt;/p&gt;

&lt;p&gt;ECMAScript is a part of JavaScript language which is mostly used in web technology, building websites or web apps.  ECMAScript is growing as one of the world's most widely used general-purpose programming languages.  It is majorly used in embedding with web browsers and also adopted for server and embedded applications.&lt;/p&gt;

&lt;p&gt;New updates to ECMAScript will release out this July. The new improvements are introduced to make JavaScript more powerful and also make working easy for developers. It provides new functions, simple ways to do complex works and much more.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgabgbevz3q42eprpi4an.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgabgbevz3q42eprpi4an.gif" alt="ECAMA"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NEW UPDATES&lt;/strong&gt;🤩&lt;/p&gt;

&lt;p&gt;The new JavaScript features in ECMAScript 2021 are:&lt;br&gt;
       1. Logical assignment operators&lt;br&gt;
           And &amp;amp; Equals (&amp;amp;&amp;amp;=)&lt;br&gt;
           OR &amp;amp; Equals (||=)&lt;br&gt;
           Nullish Coalescing &amp;amp; Equals (??=)&lt;br&gt;
       2. Numeric Separators&lt;br&gt;
       3. String replaceAll&lt;br&gt;
       4. Promise.any&lt;br&gt;
       5. Private class methods&lt;br&gt;
       6. Private Getters and setters&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Logical assignment operators&lt;/strong&gt;&lt;br&gt;
Logical assignment operators introduce new operators which combine logical operators and assignment expressions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And &amp;amp; Equals (&amp;amp;&amp;amp;=)&lt;/strong&gt;&lt;br&gt;
It assigns  when the value  is truthy.&lt;/p&gt;

&lt;p&gt;Previous :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Output: x = 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;New :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="c1"&gt;// Output: x = 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;OR &amp;amp; Equals (||=)&lt;/strong&gt;&lt;br&gt;
It assigns when the value is falsy.&lt;/p&gt;

&lt;p&gt;Previous :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Output: x = 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;New :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;
&lt;span class="c1"&gt;// Output: x = 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation the assignment operation happens only if x is a falsy value.  if x contains 1 which is a truthy value, assignment does not happen. Here x contains 0 therefore assignment happens.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nullish Coalescing &amp;amp; Equals (??=)&lt;/strong&gt;&lt;br&gt;
Symbol ?? is Nullish Coalescing operator in JavaScript. It  checks if a value is null or undefined.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;??=&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Value of x is undefined, therefor the right hand side expression is evaluated and sets x to 10.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Numeric Separators&lt;/strong&gt;&lt;br&gt;
To improve readability and to separate groups of digits, numeric literals use underscores as separators.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// A billion dollar that I want to earn&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;money&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;_000_000_000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;money&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;_000_000_000&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;00&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="c1"&gt;// Also can be used for Binary, Hex, Octal bases&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy4s1z324b0hho1q0yf4q.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy4s1z324b0hho1q0yf4q.gif" alt="js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.  String replaceAll&lt;/strong&gt;&lt;br&gt;
If we want to replace all instances of a substring in string than this new method  replaceAll is very useful.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You are reading JavaScript 2021 new updates.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replaceAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;JavaScript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ECMAScript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="c1"&gt;// output : You are reading ECMAScript 2021 new updates.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Promise.any&lt;/strong&gt;&lt;br&gt;
The Promise.any() method returns a promise that will resolve as soon as one of the promises is resolved. It is opposite of Promise.all() method which waits for all promises to resolve before it resolves.&lt;/p&gt;

&lt;p&gt;Wait, what will happen when all of the promises are rejected, Yes you get that, the method will throw an AggregateError exception with the rejection reason. We have to put the code inside try-catch block.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;promiseOne&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;promiseTwo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;2000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;promiseThree&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;first&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;any&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="nx"&gt;promiseOne&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;promiseTwo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;promiseThree&lt;/span&gt;
  &lt;span class="p"&gt;]);&lt;/span&gt;
  &lt;span class="c1"&gt;// If any of the promises was satisfied.&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// AggregateError: If all promises were rejected&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;5. Private class methods&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Private method have scope inside the class only so outside the class they are not accessible, see this example&lt;/p&gt;

&lt;p&gt;Previous :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Me&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;showMe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I am a programmer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nf"&gt;notShowMe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hidden information&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;me&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Me&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;showMe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;notShowMe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="c1"&gt;//error&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code will throw an error that gfg.notShowMe is not a function. This is because #notShowMe() is now a private method inside the class GfG and can only be access via a public method inside the class.&lt;/p&gt;

&lt;p&gt;New :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Me&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;showMe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;I am a programmer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nf"&gt;notShowMe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hidden information&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nf"&gt;showAll&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;showMe&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nf"&gt;notShowMe&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;me&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Me&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;me&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;showAll&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="c1"&gt;//I am a programmer&lt;/span&gt;
&lt;span class="c1"&gt;//Hidden information&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we create a new public method called showAll() inside the class Me from this public method we can access the private method #notShowMe()  and since our new method is a public we get this output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Private Getters and setters&lt;/strong&gt;&lt;br&gt;
Just like private methods, now we can make getters and setters as private so that they can only accessed inside class or by instance created.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Me&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nc"&gt;Name&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Animesh&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nf"&gt;viewName&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="err"&gt;#&lt;/span&gt;&lt;span class="nx"&gt;Name&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Me&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;viewName&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// Output: Animesh&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
JavaScript is one of the most popular language and these frequent updates of new features make it more awesome and development friendly. So Welcome all these new features..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/animeshmaru/c-removed-features-f86"&gt;C++ Removed features&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connect&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/animesh-maru" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/AnimeshMaru" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Updates Rocks! 😊&lt;/strong&gt; &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>news</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Microsoft Student Learn  Ambassador Program </title>
      <dc:creator>Animesh</dc:creator>
      <pubDate>Tue, 29 Jun 2021 03:47:53 +0000</pubDate>
      <link>https://dev.to/animeshmaru/microsoft-student-learn-ambassador-program-je7</link>
      <guid>https://dev.to/animeshmaru/microsoft-student-learn-ambassador-program-je7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Become a Student Ambassador&lt;/strong&gt;&lt;br&gt;
Finding your community is more important than ever as classes and social activities take place virtually. Amplify your impact and bring together your peers to learn new skills, solve real-world problems, and build communities across the globe.&lt;br&gt;
Learn and get chance to work with Microsoft community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eligibility&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;To apply, you must be at least 16 years old, have valid identification and be actively enrolled in an accredited, higher education academic institution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You must be a student from a university or college affiliated to some university.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All college students are eligible for this program. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You need to have proper valid identification papers.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yaTJTE9j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yzxlrhbl0s13llq7f4sq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yaTJTE9j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yzxlrhbl0s13llq7f4sq.jpg" alt="Microsoft "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to apply&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Microsoft Student Learn Ambassador program opens twice every year quarterly, you can apply both times.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You must have Microsoft account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visit official website of Microsoft Student Learn Ambassador or apply via given link. &lt;a href="https://studentambassadors.microsoft.com/"&gt;Apply Here&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on Apply Now button and then login with your Microsoft account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now again click on Apply Now button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You will see a form, fill the form completing all the necessary details and reading terms and conditions.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Benefits&lt;/strong&gt;&lt;br&gt;
As it turns out, earning these benefits involves doing some pretty fun things. Program have three milestones for Student Ambassadors:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Alpha&lt;/strong&gt;- Complete a Microsoft Learn path and unlock Azure credits with your Visual Studio Enterprise subscription benefit. You’ll also receive a certification voucher, and a free domain name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits include&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; LinkedIn Learning&lt;/li&gt;
&lt;li&gt; VS CodeSpaces Subscription&lt;/li&gt;
&lt;li&gt; VS Enterprise subscription&lt;/li&gt;
&lt;li&gt; MTC voucher&lt;/li&gt;
&lt;li&gt; Yourname.com domain for a year and maybe more&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;2. Beta&lt;/strong&gt; - Host an event in your community to unlock event support and resource benefits. This effort could include an invitation to join our annual Microsoft Learn Student Ambassadors Summit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits include&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Microsoft swag kits and goodies like pens, backpacks, T-shirts, 2. pen drives and more&lt;/li&gt;
&lt;li&gt;$150 worth of monthly Azure subscription&lt;/li&gt;
&lt;li&gt;And all benefits below this stage&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;3. Gold&lt;/strong&gt; - Get invited to the Gold milestone when you’ve gone above and beyond in earning your badges and serving your local community. You’ll become a Student Ambassadors Regional Leader, gain access to special events, and may be invited to become a Microsoft Most Valuable Professional (MVP).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits include&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;All benefits below this milestone&lt;/li&gt;
&lt;li&gt;Chance to be a regional leader&lt;/li&gt;
&lt;li&gt;Chance to be a Microsoft Most Valuable Professional(MVP)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Student Ambassadors program prepares students for future careers through opportunities to build vibrant communities and share the latest in tech with their peers. Through exclusive access to Microsoft resources, such as Microsoft Learn, Visual Studio Code, and Azure credits, Student Ambassadors are equipped to build their technology skillset through hands-on learning.&lt;br&gt;
In addition, you have the opportunity to develop your leadership and entrepreneurship skills through hosting events on your campus, networking with other students and Microsoft professionals, and building interdisciplinary skills, such as public speaking, and social media and personal branding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Microsoft has largest tech community, joining and working with such big company will give a boom to your carrier. Also this will make your resume highly skilled apart from others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rock it!&lt;/strong&gt;  &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>microsoft</category>
      <category>microsoftambassador</category>
    </item>
  </channel>
</rss>
