DevScrolls
59 subscribers
2 photos
8 files
86 links
A thoughtful builder's journal — exploring modern frontend architecture, state management, design systems, and the craft of resilient software.

For more:

https://www.devscrolls.dev
Download Telegram
7. What's the output?
let a = 3;
let b = new Number(3);
let c = 3;
console.log(a == b); console.log(a === b); console.log(b === c);


A: true false true
B: false false true
C: true false false
D: false true true
Answer: C
new Number() is a built-in function constructor. Although it looks like a number, it's not really a number: it has a bunch of extra features and is an object.
When we use the == operator, it only checks whether it has the same value. They both have the value of 3, so it returns true.
However, when we use the === operator, both value and type should be the same. It's not: new Number() is not a number, it's an object. Both return false.
8. What's the output?

class Chameleon {
static colorChange(newColor) {
this.newColor = newColor;
return this.newColor;
}

constructor({ newColor = 'green' } = {}) {
this.newColor = newColor;
}
}

const freddie = new Chameleon({ newColor: 'purple' });
console.log(freddie.colorChange('orange'));

A: orange
B: purple
C: green
D: TypeError
DevScrolls
8. What's the output? class Chameleon { static colorChange(newColor) { this.newColor = newColor; return this.newColor; } constructor({ newColor = 'green' } = {}) { this.newColor = newColor; } } const freddie = new Chameleon({ newColor:…
Answer: D
The colorChange function is static. Static methods are designed to live only on the constructor in which they are created, and cannot be passed down to any children or called upon class instances. Since freddie is an instance of class Chameleon, the function cannot be called upon it. A TypeError is thrown.
9. What happens when we do this?

function bark() { console.log('Woof!'); } bark.animal = 'dog';
Anonymous Poll
15%
A: Nothing, this is totally fine!
36%
B: SyntaxError. You cannot add properties to a function this way.
30%
C: "Woof" gets logged
18%
D: ReferenceError
DevScrolls
9. What happens when we do this?

function bark() { console.log('Woof!'); } bark.animal = 'dog';
Answer: A
This is possible in JavaScript, because functions are objects! (Everything besides primitive types are objects)
A function is a special type of object. The code you write yourself isn't the actual function. The function is an object with properties. This property is invocable.
11. What's the output?

function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}

const member = new Person('Lydia', 'Hallie');
Person.getFullName = function() {
return ${this.firstName} ${this.lastName};
};

console.log(member.getFullName());
DevScrolls
Output?
Answer: A
In JavaScript, functions are objects, and therefore, the method getFullName gets added to the constructor function object itself. For that reason, we can call Person.getFullName(), but member.getFullName throws a TypeError.
If you want a method to be available to all object instances, you have to add it to the prototype property:

Person.prototype.getFullName = function() { return ${this.firstName} ${this.lastName}; };
12. What's the output?
DevScrolls
12. What's the output?
Answer: A
For sarah, we didn't use the new keyword. When using new, this refers to the new empty object we create. However, if you don't add new, this refers to the global object!
We said that this.firstName equals "Sarah" and this.lastName equals "Smith". What we actually did, is defining global.firstName = 'Sarah' and global.lastName = 'Smith'. sarah itself is left undefined, since we don't return a value from the Person function.
DevScrolls
13. What are the three phases of event propagation?
Answer: D
During the capturing phase, the event goes through the ancestor elements down to the target element. It then reaches the target element, and bubbling begins.
What's the output?

let number = 0; console.log(number++); console.log(++number); console.log(number);
Anonymous Poll
27%
A: 1 1 2
24%
B: 1 2 2
32%
C: 0 2 2
16%
D: 0 1 2