Salesforce JavaScript Developer Practice Exam

Question: 1 / 400

What will the output be when message.showMessage() is called in the context of: let message = { hello: 'Hello', names: ['Sue', 'Joe'], showMessage: function() { this.names.forEach(function(name) { console.log(this.hello + ' ' + name); }); } }?

Hello Sue

undefined Sue

undefined Joe

undefined Sue and undefined Joe

In the given code snippet, the `showMessage` method calls `this.names.forEach`, which executes a callback function for each element in the `names` array. However, it's important to note how `this` behaves within that callback function.

In JavaScript, the value of `this` inside a regular function (as opposed to an arrow function) does not refer to the object that invokes the method (`message` in this case). Instead, it refers to the global object or `undefined` in strict mode when the function is called in a different context, like the way it is within the `forEach` method.

As a result, inside the callback of `forEach`, `this.hello` will not refer to `message.hello`. Instead, it will evaluate to `undefined`, leading to the output being `undefined` concatenated with each name. So, when "Sue" and "Joe" are iterated over, the output becomes:

- For "Sue": `undefined Sue`

- For "Joe": `undefined Joe`

This leads to the conclusion that when `message.showMessage()` is invoked, the final output will be `undefined Sue` and `undefined Joe`, reflected accurately in the option indicating both outputs

Get further explanation with Examzify DeepDiveBeta
Next Question

Report this question

Subscribe

Get the latest from Examzify

You can unsubscribe at any time. Read our privacy policy