I have a question about declaring a variable in an object. Assuming that global or window is also an object, why is it not possible to declare a variable using let in an object that is a child of the window object? I do not understand that. Thanks for the answer and sorry for the English but I hope you understand the question.
this doesnt worked
let a = 'global'; console.log(a); const outsideObj = { let b = 'outside var', logIt() { console.log(this); console.log(a); console.log(this.b) } }; outsideObj.logIt();
this worked
console.log(this); let a = 'global'; console.log(a); const outsideObj = { b: 'outside var', logIt() { console.log(this); console.log(a); console.log(this.b) } }; outsideObj.logIt();
i dont get difference between windows object and regular object why is it possible in parent and not in child?
Advertisement
Answer
An object has properties and can be created by an object literal with property definitions.
A scope has variables and can be created by a block statement with variable declarations.
Do not mix these two concepts, especially not syntactically. That global var
and function
declarations implicitly create properties on the global object is a special case, and also only works by the global object being provided by the runtime – there is no object literal for it.