余所様の質問で申し訳ありませんが、下記回答で疑問に思った箇所があったので質問致します。
jQueryのみならず、これらの操作はプログラミング言語の間で Optional とともに語られます。Optional の界隈において、
「加工」は
入力データに"対して"何らかの処理を施し、"出力データを伴う"ものです。
「処理」は
入力データを"元に"何らかの処理を行いますが"出力データを伴いません"。
RyogaK さんはこのように説明しています。
まず、ここでいう「出力データ」とは関数の返り値という認識で正しかったでしょうか。
この前提が正しいと仮定して、関数の返り値がundefined以外の場合に出力されたと見なすという認識でいいのでしょうか。
(ECMAScript では関数は必ず何がしかの返り値を持つ仕様であり、ユーザ定義関数において return
がなければ undefined
を返す仕様である為、undefined
は例外と考えました。)
javascript
1'use strict'; 2var array = [0, 1, 2], result; 3 4result = jQuery.each(array, function (i, element) { return element * 2; }); 5console.log(array); // [0, 1, 2] (jQuery.each は破壊的ではない) 6console.log(result); // [0, 1, 2] (jQuery.each は出力を伴うので「加工」) 7 8result = jQuery.map(array, function (element) { return element * 2; }); 9console.log(array); // [0, 1, 2] (jQuery.map は破壊的ではない) 10console.log(result); // [0, 2, 4] (jQuery.map は出力を伴うので「加工」) 11 12result = array.indexOf(9); 13console.log(array); // [0, 1, 2] (Array.prototype.indexOf は破壊的ではない) 14console.log(result); // -1 (Array.prototype.indexOf は出力を伴うので「加工」)
先の前提で考えると、jQuery.each
, jQuery.map
, Array.prototype.indexOf
は全て返り値を持つので「加工」という認識になってしまいます。
直感的には jQuery.each
や Array.prototype.indexOf
は「加工」ではなく、「処理」と考えたくなるのですが、どのように考えるのが正しいのでしょうか。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/16 13:18
2016/03/16 13:37