のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,645,816人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレ+ JavaScript の質問用スレッド vol.84 +

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
601 : Name_Not - 2011/03/19(土) 00:17:01.29 ID:??? (+3,-30,-149)
もはや再帰関係なくなった。
var fibonacci = function () {
  var memo = [0, 1];
  var fib = function (n) {
    var result = memo[n];
    if (typeof result !== 'number') {
      for (var i = memo.length; i < n; i++) memo[i] = memo[i - 2] + memo[i - 1];
      result = memo[n] = memo[n - 2] + memo[n - 1];
    }
    return result;
  };
  return fib;
}();

fibonacciには後ろの関数が実行されてreturn のfibが入る。
var a = function(){/*1*/};
var b = function(){/*2*/};
var c = a;
こういうこと?
602 : Name_Not - 2011/03/19(土) 00:23:25.70 ID:??? (+3,-30,-84)
これ実行すればわかるはず
var a = function(){ return true }();
var b = function(){ return true };

alert(a);
alert(b);
alert( b() );
//alert( a() ); ←実行するとエラーになる
603 : Name_Not - 2011/03/19(土) 00:41:53.23 ID:??? (+57,+29,-8)
フィボナッチ数列なんか再帰いらないだろ
604 : Name_Not - 2011/03/19(土) 00:51:36.10 ID:??? (+3,-30,-43)
ていうか再帰は使うべきでない
勉強にはいいかもしれないけど実践では使えない

for (i=0, j=1, k=0, fib=0; i<50; i++, fib=j+k, j=k, k=fib){
document.write("Fibonacci ("+i+") = "+fib+"<br>");
}
605 : Name_Not - 2011/03/19(土) 00:54:24.87 ID:??? (+63,+30,-57)
フィボナッチ数列は再帰を説明するときに使われるだけで
実際にフィボナッチ数列が必要な人なんかいないし、いても一般項使うだろうな

実際に使うのは
ファイルシステムやマトリューシカみたいな構造体へのアクセスが一番多いと思うわ
フラクタル画像を描くときなんかは再帰がないとちょっときつい
606 : Name_Not - 2011/03/19(土) 01:01:57.52 ID:??? (+57,+29,-28)
子孫ノードから特定のnodeTypeを持つノードを得るときにも再帰使うかな。
再帰使わない方法も出来ると思うけど即座に思いつかない。
607 : Name_Not - 2011/03/19(土) 01:09:28.87 ID:??? (+57,+29,-76)
末尾再帰はループで除去できる
階乗とかフィボナッチ数列とかはこれ
中間の再帰はスタックを使う

でもライブラリ実装者とかでもない限り
再帰のパフォーマンスが問題になるケースなんて滅多にないと思うなぁ
609 : Name_Not - 2011/03/19(土) 03:03:01.39 ID:??? (-1,-29,-6)
document.writeln(str.toUpperCase());
610 : Name_Not - 2011/03/19(土) 03:07:50.90 ID:QAnjXEom (-25,+29,-2)
んなあこたあわかっとる
611 : Name_Not - 2011/03/19(土) 03:21:33.07 ID:??? (+3,-30,-248)
少なくとも俺は聞いたこと無いな。
自前で作るならこんな感じ。
function StringBuilder(A){
this.str = String(A);
}
StringBuilder.prototype = {
append: function(A){
return this.str += String(A);
},
toUpperCase: function(){
return this.str = this.str.toUpperCase();
},
toString: function(){
return this.str.toString();
}
}
a=new StringBuilder("abc");
a.toUpperCase();

// まとめて移植。問題あるかも。.nameとか。
// いや、すべて返り値になるのが問題だなw
for (var method in String.prototype){
if (typeof method === "function"){
StringBuilder.prototype[method.name] = function(){
return this.str = method.apply(this.str, arguments);
};
}
}
612 : Name_Not - 2011/03/19(土) 03:25:49.11 ID:??? (+57,+29,-27)
まとめて移植は動かんかったわ。ごめん。
このスレか前スレぐらいにArrayのラップクラスのコードがあったからそれ見れば出来るはず。
おやすみ。
614 : Name_Not - 2011/03/19(土) 03:36:48.49 ID:??? (+3,-30,-22)
document.writeln(str.toUpperCase());
document.writeln(num.toFixed(3));
としないといけないというだけで十分じゃないのか?
仕様書読めば確実
615 : Name_Not - 2011/03/19(土) 09:45:36.14 ID:??? (-6,-29,-13)
immutable、mは2つね。
616 : Name_Not - 2011/03/19(土) 12:27:33.36 ID:??? (+57,+29,-31)
JAVASCRIPTクイックリファレンスのStringの項みたら不変って書いてあるな
英語でかっこつけてる癖に基本的な参考書も持ってないとか恥ずかしい
617 : Name_Not - 2011/03/19(土) 14:33:51.40 ID:??? (+35,+7,-25)
そもそも数値型がmutableな言語なんて存在したっけ?
あるのならぜひ知りたい。
618 : Name_Not - 2011/03/19(土) 15:04:30.00 ID:??? (+39,+21,-6)
C言語…とか……
619 : Name_Not - 2011/03/19(土) 15:12:20.62 ID:??? (+3,-29,-85)
変数は書き換え可能だけど数値という値は書き換え可能じゃないよね。
num.toFixed(3) みたいなことはC言語でどうできるって?
文字列にしてしまえばmutableだからできるのは分かっているけど。
620 : Name_Not - 2011/03/19(土) 15:13:38.22 ID:??? (+3,-29,-82)
>何て言うか、imutableかどうかが一番知りたい質問かな。

JavaScriptはクラスベースの言語じゃないと何度言えば…
それ以前にtoUpperCase();の使い方がおかしい事ぐらい調べればわかるだろ

http://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/toUpperCase
>toUpperCase メソッドは、大文字に変換された文字列の値を返します。
toUpperCase メソッドは、文字列の値、それ自身には影響を与えません。
621 : Name_Not - 2011/03/19(土) 15:14:13.45 ID:??? (+8,-30,-40)
ECMAScriptにImmutableクラスなんて概念あった?
String.prototype.toUpperCaseは非破壊的でFAだと思うけど。
622 : Name_Not - 2011/03/19(土) 15:18:06.67 ID:??? (+57,+29,-63)
だからクラスという概念が無いから。もっとも書き換え可能/不能は
クラスとは独立した概念なので、オブジェクトの種類ごとに
どのような仕様になっているかをチェックすることはできると思う。
623 : 621 - 2011/03/19(土) 15:27:14.44 ID:??? (-1,-29,-20)
ごめん。投稿前にリロードすれば良かった。
認識は一致してると思う。
http://es5.github.com/#x15.5.4.18
624 : Name_Not - 2011/03/19(土) 19:32:22.98 ID:NaPFqQUQ (+15,+24,+0)
すみません
>503の質問どうかよろしくお願いします
625 : Name_Not - 2011/03/19(土) 20:31:50.98 ID:??? (+36,-30,-32)
>>624
仕様ですが、実装がまちまちなので使うべきではありません。
http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#named-access-on-the-window-object
626 : Name_Not - 2011/03/20(日) 00:43:44.49 ID:??? (+95,+29,-31)
相変わらず回答きても放置する質問者が多いな
627 : Name_Not - 2011/03/20(日) 01:34:29.29 ID:??? (+57,+29,-9)
2chなんてそんなものでしょ
お礼でも期待してるの?
628 : Name_Not - 2011/03/20(日) 01:45:50.01 ID:ZHGMOSW3 (+19,+29,-13)
生ダコがくいてえええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ
629 : Name_Not - 2011/03/20(日) 06:26:11.01 ID:??? (+73,+29,-73)
>625
ありがとうございました
英語のサイトは半分くらい読めないので今年英語を頑張って来年くらいにまた読みます

>626
すみません…
自分は使えるネット環境は携帯しかなく、その携帯もアクセス制限をかけられていて
ibisというアプリブラウザの一日5ページのお試しを使って書き込んでいるので1日1か2レスしかできないのです
大変すみませんでした
630 : Name_Not - 2011/03/20(日) 12:27:15.60 ID:??? (+3,-30,-50)
2つの変数を文字列として連結するために、

str = "" + a + b + "です";

というように、先頭に "" を付けた式を JSLintにかけると以下のような警告が出ます。
Problem : Expected 'String' and instead saw ''''.

警告される意味が理解できないのですが、
何が問題であって、どう書けばいいと言ってるのでしょうか。
631 : Name_Not - 2011/03/20(日) 12:36:13.14 ID:??? (+91,+29,-3)
ダブルクオートをシングルクオートにしてみたらどうだろう
632 : Name_Not - 2011/03/20(日) 12:42:48.50 ID:??? (+69,+29,-13)
>>631
それはやってみましたが、違いは無かったです。
633 : Name_Not - 2011/03/20(日) 13:38:48.45 ID:??? (+31,-29,-16)
空文字列で怒られてるんじゃね
String(a) + String(b) + "です"
とかできなかったっけ?
634 : Name_Not - 2011/03/20(日) 13:57:08.43 ID:??? (+5,-29,+0)
a.toString() + b.toString() 
635 : Name_Not - 2011/03/20(日) 14:15:37.85 ID:??? (+68,+29,-41)
>633
そうかもしれないね
「文字型が帰ってくることを(toStringで明示せずに)期待している。それとシングルクォーテーション4つに見える」
っていってるみたいね。
636 : Name_Not - 2011/03/20(日) 14:36:55.21 ID:??? (+3,-30,-169)
<form method="post">
<input type='submit' name='hoge' value='1' accesskey='1'>
<input type='submit' name='hoge' value='2' accesskey='2'>
<input type='submit' name='hoge' value='3' accesskey='3'>
</form>

上記のようなボタンが3つある時、「1」のボタンをクリックする書式を教えてください
この並び方なら
document.getElementsByTagName("input").item(0).click()
で大丈夫なのですが、順番が入れ替わった時にどうすればわかりません
itemにvalue='1'を入れると押すことは押すのですが正しいボタンを押してるわけではないようです
もしくはこの書式に詳しい解説サイトありませんか?
637 : Name_Not - 2011/03/20(日) 14:44:25.58 ID:??? (+18,-29,-36)
>>635
> シングルクォーテーション4つに見える
それってどういう意味(どういうロジックでそう見えるの)でしょうか?


こうすれば、エラーが出なくなりましたが
str= String("") + a + b;
奇妙に見えますが、これでも正しいですか?
638 : Name_Not - 2011/03/20(日) 14:47:04.42 ID:??? (-1,-29,-12)
だったらstr=String()+a+b
って書くわ
639 : Name_Not - 2011/03/20(日) 14:51:05.92 ID:??? (+91,+29,-6)
そもそも何故そんなにわかりにくくて見にくい書き方してるのかがわからない
640 : Name_Not - 2011/03/20(日) 14:58:12.74 ID:??? (+69,+29,-3)
>>639
わかりやすくて見やすい書き方って何?
641 : Name_Not - 2011/03/20(日) 15:08:05.07 ID:??? (+11,-29,-95)
>637
ごめん、あんまりjslintには詳しくないけど
たぶんjslintは文法的な事だけじゃなく、
スタイリング(インデントや=とか+演算子の前後にはスペースを入れたり)
とかのコードの見た目のチェックしていると思う。それで紛らわしいのは警告を出してるじゃないかな


変数strが文字列であることを保証したいなら>634さんみたいにa,bを先に文字列に明示的に変換しておいたほうがいいと思う
638さんの式だと変数aかbに数値が代入されていると、期待した値にならないと思う。
642 : Name_Not - 2011/03/20(日) 15:14:07.97 ID:??? (+104,-29,-35)
>>641
>たぶんjslintは文法的な事だけじゃなく、
>スタイリング(インデントや=とか+演算子の前後にはスペースを入れたり)
>とかのコードの見た目のチェックしていると思う。

そういうチェックはやってないと思うよ。
643 : Name_Not - 2011/03/20(日) 15:22:12.35 ID:??? (+63,+29,-5)
>642
ごめん、予想でかいちゃった。
じゃあ何なんだろう、型のキャストは明示的に行えってことかなぁ
644 : Name_Not - 2011/03/20(日) 15:28:08.18 ID:??? (+73,+29,-4)
>>642
やってるよ。というかそこにこだわった人が作ってるlintだから
オプション次第だと思うけど
645 : Name_Not - 2011/03/20(日) 15:38:39.60 ID:??? (+19,-29,-44)
>>644
ああ、意図的にオプション設定すれば警告するようになるのか。

==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
オブション設定で外せるようにしてくれたらいいのに。
646 : Name_Not - 2011/03/20(日) 16:10:08.12 ID:??? (+36,-29,-72)
>>645
逆逆
標準はほとんど警告出る
> ==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
> オブション設定で外せるようにしてくれたらいいのに。
まさにそういうとこにこだわりまくった人が作ってるわけで

javascript the good partsとか読んで共感した人だけが使うためのツールと思った方がいい。
そうじゃなきゃ重箱の隅つつくような指摘されてかなりストレスたまると思う
647 : Name_Not - 2011/03/20(日) 16:20:38.30 ID:??? (+62,+18,-54)
>>646
>標準はほとんど警告出る
いや、標準で >>642で言ってるような警告は出ませんよ。

>> ==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
>> オブション設定で外せるようにしてくれたらいいのに。
>まさにそういうとこにこだわりまくった人が作ってるわけで
そういう柔軟性が無いから、そのこだわりに賛同できない人にとっては
使えないツールになってしまうんですよね。
648 : Name_Not - 2011/03/20(日) 16:55:59.09 ID:??? (+57,+29,-24)
lintの目的わかってないんじゃねーの
堅牢なソースコードを作るためのこだわりを無駄というなら最初から使うなよ
649 : Name_Not - 2011/03/20(日) 17:00:46.51 ID:??? (+0,-28,-35)
堅牢なソースコードを作るためには、++ も -- も continue も使ったらいかんのですかいな
650 : Name_Not - 2011/03/20(日) 17:16:44.57 ID:??? (+67,+29,-57)
++, --は他の要素と組み合わさったとき副作用が生じる可能性がある
continueは意図しない制御の流れを作る
return文だって関数の末尾以外で呼び出すことはよくないとされている

堅牢なソースコードの意味わかってないんじゃないか
生産性よりも保守性を重視するってことだぞ
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について