元スレ+ JavaScript の質問用スレッド vol.115 +
JavaScript覧 / PC版 /みんなの評価 :
451 = :
テクニカルwwww
皮肉かwww
452 = :
>>447
勘違いをしているようだが、関数型言語というのはオブジェクト指向よりも古い。そして不便。
その証拠に関数型を謳っている某ライブラリでも破壊的な非関数型メソッドがいくつも入っている。
ループ抜けるのにfalse返さないといけなかったら、関数型だとfalseしか返ってこないよねw
453 = :
>>442
メソッドチェーンを中断させるのなら、例外しか無いんじゃね?
var value = _(v).foo().bar().baz();
のfoo()で中断させる場合、例外を出さないなら
[なんかのオブジェクト].bar() は絶対実行されるから、
それでvalueにundefinedを入れるようにするとなると、
「なんかのオブジェクト」は、メソッドチェーンできるオブジェクトでありながら、
barやbazを何をやってもundefined相当のオブジェクトを返すメソッドに
すり替えないといけないわけで、出来ないことはない気もするけど
そうとう無駄なことやる羽目になりそう。
454 = :
>>442
> lodashではfalseを返せばループは終わらせられるようです
> メソッドチェーンを中断させる機構があれば尚いいのですが・・
中断の意味が二通りある。
一つは、処理が続行できなくなって中断する場合(戻り値なし)と、
もう一つは、これ以上処理する必要がないので処理を切り上げる場合(戻り値あり)
前者は例外を使う。
後者は、処理を切り上げることを意味する値を返す。
falseだったり、nullだったり、undefinedだったり、
この三つのどれかを処理を切り上げる値に使えばいいと思うけど、
無理なら例外を使ってもいいと思うし、特別なオブジェクトを返すとかもある。
asyncライブラリみたいに、引数にcallbackを渡してどう呼び出すかで
続きをやるかどうか判定するなんてのも考えられるよ。
http://qiita.com/takeharu/items/84ffbee23b8edcbb2e21
一般的な方法ってのは無いと思う。
455 = :
「関数言語的ループ」って再帰ループのことだと思ったんだが違ったのか?
メソッドチェーンの中断の話?どこで掏り替わったんだ?
456 = :
>>442の時点で二つの話がごっちゃになってるのです。
457 = :
>>452
勘違いしてないよw
時代的な並列処理の要請と、あとおそらく「伽藍とバザール」から、
古い関数型言語の見直しが何年か前にあって、
新しい関数型言語が生まれたり、関数型言語のパラダイムが既存の言語に流入してきた
この新しい流れのことを言ってるんだよ
458 = :
>>441
function exec(a) {
return a;
}
function judgment(a) {
return a!==10;
}
function loop(a,b,c,d) {
var i = d || 0,
r = b(a[i]);
if (c(r)) {
r = loop(a,b,c,i+1);
}
return r;
}
var arg = [0,1,2,3,4,5,6,7,8,9,10,11];
result = loop(arg,exec,judgment);
console.log(result);
これですっきり。
使えないライブラリを持ち出して、質問をそのライブラリの不備と掏り替えってアホかw
459 = :
>>458
少しはましになったけど、引数dが余計だね。
もし仮にIDEを使っていて、関数の仮引数を表示してくれるとしたら
気持ち悪いよね。ということで消してみて。
あと意味なく一文字変数にしない。
わかりにくいから。
460 = :
やはり例外しかないでしょうかね~
うまく呼び出し部分をラップして特別なオブジェクトを返したら中断するとか出来そうな気もするのですが
461 = :
>>458
dが消えてから指摘しようと思ったけど、
面倒なので私的。
元々の質問者は、その例で
exec,judgmentの二つに分けたくない場合の
話をしてるんだよ。
462 = :
あと関数型なら、iというインデックスを使わずに
「残りの引数」って感じで渡す気もするんだけど、
まあそこはいいのかな。残りの引数を使う正当な理由が思いつかないし。
463 = :
function loop(a,b,c) {
var arg = a.shift(),
r;
if (a.length>0 &&c(r=b(arg))) {
r = loop(a,b,c);
}
return r;
}
d,iが嫌ならこうだな。
exec,jugmentに分けなかったら戻り値がfalseしか返せないだろうに。
そんな縛りをする意味がない。
464 = :
質問者がコードを出さないから具体案が出てきづらい事になる
初めからこうなることは明白だった
465 = :
>>342
document.write("<a href='"+article[n]+"'>");
これは、ファイル名だけ?
それなら、相対パスになる
var artDir = "http://www.~.~/"
記事が入っているフォルダのパスを、変数に入れておいて、
ファイル名と連結して、絶対パスで指定する
配列の宣言は、単に下のように書ける
var article = new Array();
var article = [];
466 = :
にわか関数型野郎はhaskellスレにでも行って打ちのめされてこい
そして二度と来るな
467 = :
>>463
こうすればいいんだよ。
function loop(data, callback) {
var i = 0;
var stop = false;
function recursive(i) {
if (i < data.length) return;
var result = callback(data[i], function() { stop = true });
if (stop) return result;
return recursive(i+1);
}
return recursive(i);
}
var data = [0,1,2,3,4,5,6,7,8,9,10,11];
var result = loop(data, function(value, stop) {
if (value == 10) {
stop();
}
return a;
});
468 = :
訂正
function loop(data, callback) {
var stop = false;
function recursive(i) {
if (i < data.length) return;
var result = callback(data[i], function() { stop = true });
if (stop) return result;
return recursive(i+1);
}
return recursive(0);
}
var data = [0,1,2,3,4,5,6,7,8,9,10,11];
var result = loop(data, function(value, stop) {
if (value == 10) {
stop();
}
return value;
});
469 = :
即時関数をapplyで呼ぶというウルテクを見つけました
(function (a){
console.log(a);
}.apply(this,['x']));
これは普通に使っていい技でしょうか?
471 = :
http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/try...catch
ここに
catch (e if e instanceof EvalError)
のような書き方が載っていますが、
注: この機能は ECMAScript 仕様の一部ではありません。
と書いてあります。
このような形でキャッチするエラーを指定出来ない場合もあるということでしょうか?
472 = :
>>471
> 注: この機能は ECMAScript 仕様の一部ではありません。
実装依存という事です。
全ての実装で実装されている保証がありませんし、今後削除される可能性もあります。
対象ブラウザ全てで実装されていることを確かめる必要がありますし、今後更新される度に該当機能が削除されていないか確かめる必要があります。
473 = :
ありがとうございます
あまり使わない方が良さそうですね
欲しいエラーではない場合、再びthrowする
という判定処理を書くのがいいでしょうか?
474 = :
ontouchstartってスマホ用のイベントだとおもいますが、
これをPCで閲覧した時にも記述することってやっぱりよくないことですか?
475 = :
C++の int operator()() {...} みたいなメソッドは書けますか?
クラスインスタンスを関数のように使いたいのです。
function Foo() { .. }
var obj = new Foo();
obj(); /* 関数としてコールしたい */
http://ideone.com/zRugbf
476 = :
残念ながら出来ません
477 = :
>>475
こういうこと?
function Foo() {
function bar() {
console.log('a');
}
return bar;
}
var obj = new Foo();
obj(); // a
478 = :
>>477
クロージャーではなくprotptypeでなんとか出来ないのかと思いまして。
>>476
そうかぁ、出来ないのですね。
ありがとん。
479 = :
javascriptがflashに大勝利するにはどうすればいいと思いますか
ぼくはソースの暗号化が肝だと思うのですが
480 = :
意味不明
flashなんてもうオワコンじゃん
481 = :
>>474
PCかスマホかなんて忘れた方がいい。
あるのは画面の大きさぐらい。
タッチ装置がついててブラウザが対応していたら、
ontouchstartが使われる。そうでなければ使われない。
スマホかどうかは関係ない。
482 = :
>>479
ソースの暗号化なんて、誰もほしがってなんかいない。
483 = :
>>481
ありがとうございました!
484 = :
>>478
function f() {
console.log(this.a);
}
var o = {
a: 1
},
obj = f.bind(o);
obj(); // 1
o.a = 2;
obj(); // 2
bind使えばこう書けるが。
486 = :
>>473
try-catch のcatch節でthrowするという意味なら普通はあまりやりません。
標準の例外を吸収しておいて別の例外を発生させるのは特異なケースですが、背景が不明なのでそれが正しいのかは何ともいえません。
普通は標準の例外を見越して、例外が発生しないようにコーディングするので、try-catch は滅多に使いません。
もし、「例外の発生条件がよくわからないのでとりあえず、try-catchで括る」という考え方なら良くない手法だと思います。
487 = :
lodashで、変数でキー名を指定してオブジェクトに値を設定したい場合は
自分でプラグインを作成するしかないでしょうか?
assignの引数はオブジェクトにしか対応していないようです
jqueryのように
assign(key, value)
というような形でも指定できたら一番いいのですが
488 = :
>>485
なんでlodashについては何も言わないんだ
490 = :
jsでhtmlのエレメントを取得し、属性値を設定します。例えばidとか。
この時、自動的にnameにも同じ値が設定すされるようにする。
みたいな仕組みを作ることは可能でしょうか?
491 = :
チェックボックスにidと同じname属性を付けたいのだと思うが、
492 = :
しまった、途中でカキコしてしまったw
jQueryが使えるなら、
$('input[type=checkbox]).each(function(){$(this).arrt("name", this.id)});
でどうでしょうか?
494 = :
PCでスマホサイトの動作を確認したいんですが、
Useragentを書き換えるだけじゃなくて、スマホ特有のイベントontouch系を発生させるツールとかないですか?
495 = :
>>494
エミュレータを使えばいいのでは?
最終的には実機で確認する必要がありますが
496 = :
>>490
もう少し具体的に。
要素と文字列を受け取って、idとnameとに設定する関数を作る
っていうのでも仕組みって言えば仕組みだよね
jQueryで$('.foo').setIdAndName('foobar') みたいな感じでしたければ、
そういうプラグインを書けばいいし
497 = :
>>488
あっちのスレは、jQueryだけじゃなかったのか
ライブラリ総合か
それなら、Lo-Dashの話もあっちで
次から、スレタイも変えないと
【jQuery】JavaScript ライブラリ総合質問所 vol.3【Lo-Dash】
498 = :
まあ>>488も分かってて言ってるんだろうけど
jQuery他をこっちで聞いてるのはライブラリスレを知らないだけ
lodashをこっちで聞いてるのは意図的な荒らしと自演レス
499 = :
>>497
そのタイトルだとあなたと同じようにjQuery, Lo-Dashスレと勘違いされるから、特定のライブラリ名はタイトルに含めるべきではないと思う
500 :
でもJQueryも有名だしJQuery等でいいんじゃないか
どっちにしても向こうのスレで話し合えば良いと思うが
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.135 + (1002) - [97%] - 2018/11/23 10:30
- + JavaScript の質問用スレッド vol.125 + (1001) - [97%] - 2015/10/7 17:45
- + JavaScript の質問用スレッド vol.119 + (1002) - [97%] - 2014/10/3 15:30
- + JavaScript の質問用スレッド vol.118 + (1002) - [97%] - 2014/8/29 22:30
- + JavaScript の質問用スレッド vol.117 + (1009) - [97%] - 2014/8/5 3:30
- + JavaScript の質問用スレッド vol.116 + (1002) - [97%] - 2014/7/1 0:45
- + JavaScript の質問用スレッド vol.114 + (1001) - [97%] - 2014/5/3 10:45
- + JavaScript の質問用スレッド vol.112 + (1001) - [97%] - 2013/11/27 16:46
- + JavaScript の質問用スレッド vol.111 + (1001) - [97%] - 2013/11/4 6:00
- + JavaScript の質問用スレッド vol.110 + (1001) - [97%] - 2013/10/13 14:01
- + JavaScript の質問用スレッド vol.113 + (1001) - [97%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.105 + (1001) - [97%] - 2013/5/20 4:45
- + JavaScript の質問用スレッド vol.109 + (1001) - [95%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.121 + (1001) - [95%] - 2022/11/29 16:30
- + JavaScript の質問用スレッド vol.126 + (348) - [95%] - 2023/1/12 17:00
- + JavaScript の質問用スレッド vol.100 + (1001) - [95%] - 2012/6/13 22:46
トップメニューへ / →のくす牧場書庫について