return; と return undefined; が同じではない
下記スレッドにおいて raccy さんが次のように回答されています。
JavaScriptにおいて
return;
とreturn undefined;
が同じではないのと同じく、CoffeeScriptではreturn
とreturn undefind
は同じではありませんが、結果だけを見ると、CoffeeScriptは両方ともundefind
値を返すという同じ動作になります。
コード
JavaScript
1function sample1 () { 2 // return を書かない 3} 4 5function sample2 () { 6 return; 7} 8 9function sample3 () { 10 return undefined; 11} 12 13function sample4 () { 14 return void 0; 15} 16 17console.log(sample1()); // undefined (明示的に return しなかった場合の返り値の規定値は undefined である) 18console.log(sample2()); // undefined (return; は undefined を返す) 19console.log(sample3()); // undefined (グローバル変数 undefined は undefined を返す) 20console.log(sample4()); // undefined (void 演算子の評価値は常に undefined である)
検証の結果、評価値は全て同じとなりました。
undefined は予約語ではない
ES5 でグローバル変数 undefined
は書き換え不可能になりましたが、ES7 (ES2016) でも undefined
は Keywords に入ってない為、ローカル変数 undefined
を定義して疑似的に書き換える事が可能です。
JavaScript
1(function (undefined) { // ローカル変数 undefined を定義する 2 console.log(undefined); // 1 3}(1));
質問
「JavaScriptにおいてreturn;
とreturn undefined;
が同じではない」とは何の違いを表しているのでしょうか。
「undefined
の名前でローカル変数を定義できてしまう為、変数 undefined
が undefined
値である事を保証できない」という意味でしょうか。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/02 13:22
2016/11/02 13:25
2016/11/02 13:50
2016/11/02 13:58
2016/11/02 14:05
2016/11/02 14:13
2016/11/02 14:25