元スレ+ JavaScript の質問用スレッド vol.84 +
JavaScript覧 / PC版 /みんなの評価 :
601 = :
もはや再帰関係なくなった。
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 = :
これ実行すればわかるはず
var a = function(){ return true }();
var b = function(){ return true };
alert(a);
alert(b);
alert( b() );
//alert( a() ); ←実行するとエラーになる
603 = :
フィボナッチ数列なんか再帰いらないだろ
604 = :
ていうか再帰は使うべきでない
勉強にはいいかもしれないけど実践では使えない
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 = :
フィボナッチ数列は再帰を説明するときに使われるだけで
実際にフィボナッチ数列が必要な人なんかいないし、いても一般項使うだろうな
実際に使うのは
ファイルシステムやマトリューシカみたいな構造体へのアクセスが一番多いと思うわ
フラクタル画像を描くときなんかは再帰がないとちょっときつい
606 = :
子孫ノードから特定のnodeTypeを持つノードを得るときにも再帰使うかな。
再帰使わない方法も出来ると思うけど即座に思いつかない。
607 = :
末尾再帰はループで除去できる
階乗とかフィボナッチ数列とかはこれ
中間の再帰はスタックを使う
でもライブラリ実装者とかでもない限り
再帰のパフォーマンスが問題になるケースなんて滅多にないと思うなぁ
611 = :
少なくとも俺は聞いたこと無いな。
自前で作るならこんな感じ。
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 = :
まとめて移植は動かんかったわ。ごめん。
このスレか前スレぐらいにArrayのラップクラスのコードがあったからそれ見れば出来るはず。
おやすみ。
614 = :
document.writeln(str.toUpperCase());
document.writeln(num.toFixed(3));
としないといけないというだけで十分じゃないのか?
仕様書読めば確実
616 = :
JAVASCRIPTクイックリファレンスのStringの項みたら不変って書いてあるな
英語でかっこつけてる癖に基本的な参考書も持ってないとか恥ずかしい
617 = :
そもそも数値型がmutableな言語なんて存在したっけ?
あるのならぜひ知りたい。
618 = :
C言語…とか……
619 = :
変数は書き換え可能だけど数値という値は書き換え可能じゃないよね。
num.toFixed(3) みたいなことはC言語でどうできるって?
文字列にしてしまえばmutableだからできるのは分かっているけど。
620 = :
>何て言うか、imutableかどうかが一番知りたい質問かな。
JavaScriptはクラスベースの言語じゃないと何度言えば…
それ以前にtoUpperCase();の使い方がおかしい事ぐらい調べればわかるだろ
http://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/toUpperCase
>toUpperCase メソッドは、大文字に変換された文字列の値を返します。
toUpperCase メソッドは、文字列の値、それ自身には影響を与えません。
621 = :
ECMAScriptにImmutableクラスなんて概念あった?
String.prototype.toUpperCaseは非破壊的でFAだと思うけど。
622 = :
だからクラスという概念が無いから。もっとも書き換え可能/不能は
クラスとは独立した概念なので、オブジェクトの種類ごとに
どのような仕様になっているかをチェックすることはできると思う。
624 :
すみません
>503の質問どうかよろしくお願いします
625 = :
>>624
仕様ですが、実装がまちまちなので使うべきではありません。
http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#named-access-on-the-window-object
626 = :
相変わらず回答きても放置する質問者が多いな
627 = :
2chなんてそんなものでしょ
お礼でも期待してるの?
628 :
生ダコがくいてえええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ
629 = :
>625
ありがとうございました
英語のサイトは半分くらい読めないので今年英語を頑張って来年くらいにまた読みます
>626
すみません…
自分は使えるネット環境は携帯しかなく、その携帯もアクセス制限をかけられていて
ibisというアプリブラウザの一日5ページのお試しを使って書き込んでいるので1日1か2レスしかできないのです
大変すみませんでした
630 = :
2つの変数を文字列として連結するために、
str = "" + a + b + "です";
というように、先頭に "" を付けた式を JSLintにかけると以下のような警告が出ます。
Problem : Expected 'String' and instead saw ''''.
警告される意味が理解できないのですが、
何が問題であって、どう書けばいいと言ってるのでしょうか。
631 = :
ダブルクオートをシングルクオートにしてみたらどうだろう
632 = :
>>631
それはやってみましたが、違いは無かったです。
633 = :
空文字列で怒られてるんじゃね
String(a) + String(b) + "です"
とかできなかったっけ?
634 = :
a.toString() + b.toString()
635 = :
>633
そうかもしれないね
「文字型が帰ってくることを(toStringで明示せずに)期待している。それとシングルクォーテーション4つに見える」
っていってるみたいね。
636 = :
<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 = :
>>635
> シングルクォーテーション4つに見える
それってどういう意味(どういうロジックでそう見えるの)でしょうか?
こうすれば、エラーが出なくなりましたが
str= String("") + a + b;
奇妙に見えますが、これでも正しいですか?
639 = :
そもそも何故そんなにわかりにくくて見にくい書き方してるのかがわからない
640 = :
>>639
わかりやすくて見やすい書き方って何?
641 = :
>637
ごめん、あんまりjslintには詳しくないけど
たぶんjslintは文法的な事だけじゃなく、
スタイリング(インデントや=とか+演算子の前後にはスペースを入れたり)
とかのコードの見た目のチェックしていると思う。それで紛らわしいのは警告を出してるじゃないかな
変数strが文字列であることを保証したいなら>634さんみたいにa,bを先に文字列に明示的に変換しておいたほうがいいと思う
638さんの式だと変数aかbに数値が代入されていると、期待した値にならないと思う。
642 = :
>>641
>たぶんjslintは文法的な事だけじゃなく、
>スタイリング(インデントや=とか+演算子の前後にはスペースを入れたり)
>とかのコードの見た目のチェックしていると思う。
そういうチェックはやってないと思うよ。
643 = :
>642
ごめん、予想でかいちゃった。
じゃあ何なんだろう、型のキャストは明示的に行えってことかなぁ
644 = :
>>642
やってるよ。というかそこにこだわった人が作ってるlintだから
オプション次第だと思うけど
645 = :
>>644
ああ、意図的にオプション設定すれば警告するようになるのか。
==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
オブション設定で外せるようにしてくれたらいいのに。
646 = :
>>645
逆逆
標準はほとんど警告出る
> ==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
> オブション設定で外せるようにしてくれたらいいのに。
まさにそういうとこにこだわりまくった人が作ってるわけで
javascript the good partsとか読んで共感した人だけが使うためのツールと思った方がいい。
そうじゃなきゃ重箱の隅つつくような指摘されてかなりストレスたまると思う
647 = :
>>646
>標準はほとんど警告出る
いや、標準で >>642で言ってるような警告は出ませんよ。
>> ==や!=演算子を使うなとか、parseIntの第2引数を省略するなとかの警告メッセージも
>> オブション設定で外せるようにしてくれたらいいのに。
>まさにそういうとこにこだわりまくった人が作ってるわけで
そういう柔軟性が無いから、そのこだわりに賛同できない人にとっては
使えないツールになってしまうんですよね。
648 = :
lintの目的わかってないんじゃねーの
堅牢なソースコードを作るためのこだわりを無駄というなら最初から使うなよ
650 = :
++, --は他の要素と組み合わさったとき副作用が生じる可能性がある
continueは意図しない制御の流れを作る
return文だって関数の末尾以外で呼び出すことはよくないとされている
堅牢なソースコードの意味わかってないんじゃないか
生産性よりも保守性を重視するってことだぞ
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.94 + (1001) - [97%] - 2012/1/8 15:46
- + JavaScript の質問用スレッド vol.89 + (1001) - [97%] - 2011/9/4 4:17
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.74 + (1001) - [97%] - 2009/12/1 6:08 ○
- + JavaScript の質問用スレッド vol.87 + (1001) - [97%] - 2011/6/21 6:33
- + JavaScript の質問用スレッド vol.86 + (1001) - [97%] - 2011/5/27 21:50
- + JavaScript の質問用スレッド vol.85 + (1001) - [97%] - 2011/4/25 21:32
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.82 + (1001) - [97%] - 2011/1/19 7:54
- + JavaScript の質問用スレッド vol.81 + (1001) - [97%] - 2010/12/10 20:01
- + JavaScript の質問用スレッド vol.80 + (1001) - [97%] - 2010/11/9 2:17
- + JavaScript の質問用スレッド vol.141 + (881) - [95%] - 2021/4/19 9:00
- + JavaScript の質問用スレッド vol.134 + (1001) - [95%] - 2018/8/3 23:15
- + JavaScript の質問用スレッド vol.104 + (1001) - [95%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.124 + (1001) - [95%] - 2015/7/16 1:30
- + JavaScript の質問用スレッド vol.142 + (984) - [95%] - 2020/8/27 19:15
- + JavaScript の質問用スレッド vol.114 + (1001) - [95%] - 2014/5/3 10:45
トップメニューへ / →のくす牧場書庫について