@@ -257,7 +257,7 @@ const func4 = function(p1, p2){
257257
258258func4 ( 1 , 2 , 3 , 4 ) ;
259259
260- // restArgs
260+ // restArgs using '...' (Spread Operator)
261261
262262const func5 = function ( para1 , para2 , ...restArgs ) {
263263 console . log ( `para1 = ${ para1 } , para2 = ${ para2 } , rest = ${ restArgs } ` ) ;
@@ -276,3 +276,130 @@ while arguments object contains all the arguments passed to the function.
276276*/
277277
278278
279+ // spread operator in objects
280+
281+ let obj5 = { ...obj2 , blood_group :'O+' } ;
282+ obj5 . name = 'Paul' ;
283+ console . log ( obj5 ) ;
284+
285+ // Short Circuiting
286+
287+ true && 'Hello' && console . log ( 'Bye' ) ;
288+ '' || 0 || false || console . log ( 'Finally' ) ;
289+
290+ // Nullish Coalescing Operator
291+ let var1 = null ?? undefined ?? 0 ;
292+ console . log ( var1 ) ;
293+
294+ // Optional Chaining
295+ // Access values without checking if the parent object exists.
296+ // Instead of returning error, it will return null or undefined.
297+ let dog = {
298+ german_shepard :{
299+ color : 'brown-black' ,
300+ purpose : 'protection'
301+ } ,
302+ bulldog :{
303+ color : 'skin' ,
304+ purpose : 'protection'
305+ } ,
306+ husky :{
307+ color : 'grey' ,
308+ purpose : 'protection'
309+ } ,
310+ retriever : {
311+ color : 'golden' ,
312+ purpose : 'showoff'
313+ }
314+ }
315+
316+ console . log ( dog . shibu ?. color ?? 'breed not found' ) ;
317+ console . log ( dog . husky ?. purpose ) ;
318+ console . log ( dog ?. bulldog . color ) ;
319+
320+
321+ // for...of loop - Only works on iterables, for eg, like array, strings etc
322+ // and not on objects
323+
324+ let arr1 = [ 'Hello' , 'There' , 1 , 0 , 0 ] ;
325+ for ( let i of arr1 ) {
326+ console . log ( i ) ;
327+ }
328+
329+ // If you want index as well
330+ for ( let [ j , k ] of arr1 . entries ( ) ) {
331+ console . log ( j , k ) ;
332+ }
333+
334+ // Object keys function
335+ for ( let var2 of Object . keys ( dog ) ) {
336+ console . log ( var2 ) ;
337+ }
338+ console . log ( Object . keys ( dog ) ) ; // It gives you an array
339+
340+ // Object values function
341+ for ( let var2 of Object . values ( dog ) ) {
342+ console . log ( var2 ) ;
343+ }
344+ console . log ( Object . values ( dog ) ) ; // It gives you an array
345+
346+ // Object Entries function
347+ // Earlier we have used entries method on array but it does not work
348+ // for object. For object we used Entries function
349+ console . log ( Object . entries ( dog ) ) ;
350+ for ( let [ t1 , t2 ] of Object . entries ( dog ) ) {
351+ console . log ( t1 , t2 ) ;
352+ }
353+
354+
355+ // Sets
356+ let s1 = new Set ( ) ;
357+ console . log ( s1 ) ;
358+ let s2 = new Set ( [ 45 , 23 , 11 , 45 , 23 , 78 , 54 , 23 ] ) ;
359+ console . log ( s2 ) ;
360+ s1 . add ( 'a' ) . add ( 'b' ) . add ( 'c' ) . add ( 'd' ) . add ( 'a' ) . add ( 'c' ) ;
361+ console . log ( s1 ) ;
362+ s2 . delete ( 78 ) ;
363+ console . log ( s2 ) ;
364+ console . log ( s1 . has ( 'e' ) ) ;
365+ console . log ( s2 . size ) ;
366+ // Set has keys() and values(), but both values are identical
367+ console . log ( s1 . keys ( ) ) ;
368+ console . log ( s1 . values ( ) ) ;
369+ for ( let [ i , j ] of s1 . entries ( ) ) {
370+ console . log ( i == j ) ;
371+ }
372+
373+ // Map
374+ let m1 = new Map ( [ [ 'a' , 1 ] ,
375+ [ 'b' , 2 ] ,
376+ [ 'c' , 3 ] ,
377+ [ 'd' , 4 ] ] ) ;
378+ let m3 = {
379+ 'a' : 1 ,
380+ 'b' : 2
381+ }
382+ let m2 = new Map ( ) ;
383+ m2 . set ( 'FName' , 'John' )
384+ . set ( 'LName' , 'Wick' )
385+ . set ( 'Fav_Pet' , 'Dog' ) ;
386+
387+ console . log ( m1 ) ;
388+ console . log ( m2 ) ;
389+ console . log ( m1 . size ) ;
390+ console . log ( m2 . has ( 'FName' ) ) ;
391+ console . log ( m1 . get ( 'd' ) ) ;
392+ for ( let i of m2 . keys ( ) ) {
393+ console . log ( i ) ;
394+ }
395+ for ( let i of m2 . values ( ) ) {
396+ console . log ( i ) ;
397+ }
398+ for ( let [ i , j ] of m2 . entries ( ) ) {
399+ console . log ( i , j ) ;
400+ }
401+ // Iteration is same as using entries()
402+ for ( let [ i , j ] of m2 ) {
403+ console . log ( i , j ) ;
404+ }
405+ console . log ( m1 [ 'a' ] ) ; // Random Access is not allowed
0 commit comments