// Diff b/w Regular Functions and Arrow Functions
// Arrow function won't be having it's own this keyword, it is depending on the parent
var firstName = 'Srinu'; // It will be available in window object
const resource = {
firstName : 'Srinu',
lastName : 'SFDC',
year : 1993,
greet : () => {
console.log(this);
console.log(`Hello ${this.firstName}`);
},
calcAge : function() {
console.log(this);
const self = this;
// Inner function won't be having the this keyword
const isNewGeneration = function() {
console.log(self);
console.log(self.year);
}
isNewGeneration();
// When you use arrow function it gets the parent this avoid issue without using self
const isNewGeneration2 = () => {
console.log(this);
console.log(this.year);
}
isNewGeneration2();
}
}
resource.greet();
resource.calcAge();
// Conclusion: Avoid using var and avoid using arrow function if you don't want to think about this keyword.
---
// arguments keyword is present in regular functions
const add = function(n1, n2) {
console.log(arguments);
return n1 + n2;
}
add(10,20);
add(20,40,90);
// arguments keyword is not present in arrow functions
const substract = (n1,n2) => {
console.log(arguments);
return n1 - n2;
}
substract(20,5);
substract(20,5,10);
--------------
// Primitives vs. Non Primitives
// Primitive Types
let age = 20;
let oldAge = age;
age = 21;
console.log(age);
console.log(oldAge);
// Reference Types
const resource = {
name : 'Srinu',
age : 20
}
const sfdcResource = resource; // constant propery values can be changed
sfdcResource.name = 'SFDc';
console.log('resource: ',resource);
console.log('sfdcResource: ',sfdcResource);
sfdcResource = {}; // this won't work as it is const
// Copying Objects
const resource2 = {
name : 'Srinu',
age : 20,
certifications : ['Admin', 'PD I', 'App Builder']
}
const resource2Copy = Object.assign({},resource2);
resource2Copy.name = 'SFDC';
resource2Copy.certifications.push('PD II'); // Deep clone won't work
console.log(resource2,resource2Copy);
No comments:
Post a Comment