はじめに
LeetCodeをやり始めて、いきなり一問目で間違えたので備忘録としてメモしておきます。
問題文の指示をしっかり読むことが大切です。
問題
- createHelloWorld関数を書きなさい
- これは常に「Hello World」を返す新たな関数を返す
間違い
/**
* @return {Function}
*/
var createHelloWorld = function() {
return function(...args) {
return console.log("Hello World");
}
};
/**
* const f = createHelloWorld();
* f(); // "undefined"
*/
Hello World出すんやろ、簡単やん!と思って実行してみると「undefined」に。
解決法
- 単にreturn "Hello World"とする
/**
* @return {Function}
*/
var createHelloWorld = function() {
return function(...args) {
return "Hello World";
}
};
/**
* const f = createHelloWorld();
* f(); // "Hello World"
*/
undefinedの原因は、return console.log("Hello World")としていたことでした。
console.log()には戻り値がないので、returnしてもundefinedになっていたわけです。
そもそもコンソールにHello Worldを出力するという問題ではないので、指示を読めていなかったということになります。
参考