2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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

1 :Name_Not_Found:2014/05/03(土) 08:16:35.71 ID:???.net
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。
  回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止ではありませんが、ライブラリスレで聞くとより回答を得やすいかもしれません。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

2 :Name_Not_Found:2014/05/03(土) 08:17:42.43 ID:???.net
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/

3 :Name_Not_Found:2014/05/03(土) 08:18:54.92 ID:???.net
■前スレ
+ JavaScript の質問用スレッド vol.114 +
http://toro.2ch.net/test/read.cgi/hp/1394931594/

■過去スレ全集
http://www2.atpages.jp/mirror/2ch/javascript/
http://usamimi.info/~mirrorhenkan/2ch/javascript/ (閲覧のみ)

■テンプレ案
http://jsfiddle.net/fH4cC/31/show/

■関連スレ
ECMAScript デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/
【WHATWG】HTML5 Part6【W3C HTML WG】
http://toro.2ch.net/test/read.cgi/hp/1393153279/
Webサイト制作初心者用質問スレ part239
http://toro.2ch.net/test/read.cgi/hp/1393828207/
CSS初心者スレッド=12th=
http://toro.2ch.net/test/read.cgi/hp/1343429848/
Canvasについて語ろう
http://toro.2ch.net/test/read.cgi/hp/1305093769/

4 :Name_Not_Found:2014/05/03(土) 08:20:05.80 ID:???.net
■主要FAQ (全部は http://fiddle.jshell.net/vSqKr/33/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
  DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
  JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
  グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
  IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
  「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
  「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか。

5 :Name_Not_Found:2014/05/03(土) 08:25:56.27 ID:???.net
■各種仕様 ( http://fiddle.jshell.net/vSqKr/33/show/#Link も参照 )
◆ Standard ECMA-262
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://people.mozilla.org/~jorendorff/es6-draft.html (ECMAScript 6 有志HTML版)
http://kangax.github.io/es5-compat-table/ (ECMAScript 5 compatibility table)
http://kangax.github.io/es5-compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
http://www.hcn.zaq.ne.jp/___/WEB/DOM4-ja.html (DOM Standard (DOM4) 和訳)
http://www.w3.org/TR/DOM-Level-3-Events/ (DOM3 Events)
http://www.w3.org/TR/uievents/ (UI Events)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html (CSSOM 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
http://domparsing.spec.whatwg.org/ (DOM Parsing and Serialization - innerHTML等)
http://www.hcn.zaq.ne.jp/___/WEB/XHR-ja.html (XMLHttpRequest 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/File_API-ja.html (File API 和訳)
http://www.whatwg.org/specs/ (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
https://developer.mozilla.org/ja/docs
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html
◆ MSDN Library
http://msdn.microsoft.com/ja-jp/library/yek4tbz0.aspx (JavaScript)
http://msdn.microsoft.com/ja-jp/library/cc427807.aspx (JScript)
http://msdn.microsoft.com/ja-jp/library/cc409712.aspx (DHTML)

6 :Name_Not_Found:2014/05/03(土) 13:05:07.40 ID:???.net
>>1Java乙cript

7 :Name_Not_Found:2014/05/03(土) 18:37:34.60 ID:???.net
>>1

dom要素へのidの設定はsetAttributeを使うのとidプロパティへの代入と
どっちがいいんですか?

8 :Name_Not_Found:2014/05/03(土) 18:41:22.61 ID:???.net
関数の中で関数を定義している場合
親関数が呼ばれるたびに子関数は再定義されるのでしょうか?

9 :Name_Not_Found:2014/05/03(土) 19:37:18.88 ID:???.net
onscrollハンドラが、スクリプトによるscrollでも反応します
しかし、タイミング的に反応して欲しくない時があります
一時的にハンドラを無効にするいい方法はないでしょうか?

10 :Name_Not_Found:2014/05/03(土) 20:04:19.03 ID:???.net
>>9の件ですが、bindFirstプラグインで別のハンドラを上に登録し、そこでイベントをstopし、
反応してほしくない期間が終わったらその蓋ハンドラを削除するというウルテクを思いつき
うまくいきました
もっといい方法はあるでしょうか?

11 :Name_Not_Found:2014/05/03(土) 22:11:49.08 ID:???.net
>>9
もっといいかどうかわからんが
その期間中ハンドラの中で条件分岐とか
removeEventListner+addEventListenerとか
別のハンドラでcapture+stopPropagationとか
これらの組み合わせなど
テクと言うほどでもない方法はある

12 :Name_Not_Found:2014/05/04(日) 01:22:05.96 ID:???.net
コールバック関数を使ったプログラミングでは
後で実行されるコードを先に書いたりして、すごく見にくくなります
コールバック関数の中で更にコールバック関数を使ったりすると更にごちゃごちゃになります
見やすくする方法はないでしょうか?

13 :Name_Not_Found:2014/05/04(日) 02:32:26.41 ID:???.net
ぼくもちょうどそれを質問しようとしたのでしりたいです
簡単なものは今までは↓の感じでやっていました

var _to = {};
_to.print = function(a) { console.log(a); };
_to.abs = function(a) { return Math.abs(a); };

function sum(a,b,callback,callback_name,callback2,callback2_name) {
return callback[callback_name](a+b,callback2,callback2_name);
};

sum(1,-3,_to,'print'); // -2
console.log(sum(1,-3,_to,'abs')); // 2
sum(1,-3,_to,'abs',_to,'print'); // 2

14 :Name_Not_Found:2014/05/04(日) 11:44:26.93 ID:???.net
>>12
あるよ。 「javascript 非同期ライブラリ」でぐぐれば
いろんな人が分かりやすく教えてくれてる。

>>13
君はまず、いいライブラリを使って見る必要があるね。
lodashとかピッタリだろう。

よく考えられて作られたライブラリは
どのような使い方をするのか勉強すれば
自分でも作れるようになるだろう。

15 :Name_Not_Found:2014/05/04(日) 14:06:16.58 ID:???.net
前スレ >996
エスケープの意味がわからないが、一般的に、
人が入力するデータは、間違いが多いから、
入力チェックや訂正をする

>>8
再定義ってどういう意味?

>>9
イベントを処理しないのなら、
ハンドラの冒頭で、即リターンすれば?

16 :Name_Not_Found:2014/05/04(日) 14:14:29.58 ID:???.net
質問なのかよくわからないんですが
JavascriptやjQueryにオススメのテキストエディタってありますか?

17 :Name_Not_Found:2014/05/04(日) 15:07:08.14 ID:???.net
どうみても質問です

18 :Name_Not_Found:2014/05/04(日) 15:30:54.14 ID:???.net
本当に

19 :Name_Not_Found:2014/05/04(日) 16:12:02.62 ID:???.net
>>16
sublime text一択

20 :Name_Not_Found:2014/05/04(日) 17:00:25.44 ID:???.net
Win7 サクラエディタ、NotePad++
Win8 TeraPad

やっぱ、IDEじゃないと、プロパティなどの補完が効かない

21 :16:2014/05/04(日) 17:19:42.25 ID:???.net
個人的に「あれ?あの関数なんていったっけ?ti・・・ti・・・」→time()
って予測変換で教えてくれるのがあればいいなーって思ってます

22 :Name_Not_Found:2014/05/04(日) 17:47:20.05 ID:???.net
単語補完とかスニペットとかのキーワードでググると吉。

23 :Name_Not_Found:2014/05/04(日) 18:21:49.38 ID:???.net
sublime text2で出来る
B級以上のJavaScripterはみんな使ってるよ

24 :16:2014/05/04(日) 18:27:11.83 ID:???.net
うおおおおsublimetextっての調べてみたらコレは凄い
これです、こんなの探してましたありがとうございます
これでフリーだなんて世の中凄いものがあるもんですね

25 :Name_Not_Found:2014/05/04(日) 18:40:38.96 ID:???.net
IE6-11
Fire最新
Google最新
で動作する

文字サイズを変更した時のイベントをキャッチしてアラートだしたいのだがリファレンス見ても文字サイズ変更のイベントがのっとらん
このままでは
非表示のテキスト入りオブジェクトをクリエイトしたのち
セットタイムアウトで関数を何度も呼び出してして要素の高さが変わったらアラート
と言うことをしなければならない

なんかセットタイムアウトを使わない良い方法あるか?
もちろんセットインターバルもなしで

26 :Name_Not_Found:2014/05/04(日) 19:00:42.56 ID:???.net
そんなイベント聞いたことないな
多分ないよ

27 :Name_Not_Found:2014/05/04(日) 19:12:36.89 ID:???.net
配列で返ってきた返り値を直接スカラー変数に代入することはどうやってもできないでしょうか?
ES6では出きるそうですが、ES3で。
見通しが悪くなるから一時変数は減らしたいんですよね〜
関数言語的アプローチもそういうところから来てるんですかね

28 :Name_Not_Found:2014/05/04(日) 19:19:46.22 ID:???.net
PCが時間とともに進化していくのは必然
ということはあらゆるコードは自動的に高速化していくということ
だとするならば、筋のいいコードとは、見やすく保守性の高いコードではないだろうか?
むろん何度も深いスコープの変数にアクセスするよりは、一度ローカル変数に代入した方が
見やすく保守性もあがるので、ローカル変数に代入するという方針は基本的には正しいが、
速度面で避けていた関数言語的アプローチも、保守性の面からは採用すべきかもしれない。

29 :Name_Not_Found:2014/05/04(日) 19:35:48.73 ID:???.net
>>26
やっぱ無いのかー

30 :Name_Not_Found:2014/05/04(日) 22:25:12.96 ID:???.net
>>16
http://webcre8.jp/use/software-editor-brackets.html

31 :Name_Not_Found:2014/05/04(日) 22:36:46.20 ID:???.net
ブラケットって少し前にこのスレに話題になった時に試したけど
sublimeをパクろうとして失敗したくそエディターじゃん
今はマシになったの?

32 :Name_Not_Found:2014/05/04(日) 23:51:45.61 ID:???.net
>>25
iframe in フレームのスクロール変化でどや?!

33 :Name_Not_Found:2014/05/05(月) 00:48:56.54 ID:???.net
setTimeoutで呼ばれた関数の中から
またsetTimeoutで同じ関数を呼ぶ
ということを繰り返したら、スタックは増加しますか?
setTimeoutで遅れて呼ぶので、スタックの増加はないと思っていたのですが
妙なかくつきがあり、もしかしてスタックが積まれすぎてるせいでは?と思ったのです

34 :Name_Not_Found:2014/05/05(月) 01:15:37.07 ID:???.net
>>33
setTimeout自体は何も評価せずスケジュールだけ組んで即時に戻るから
コールスタックは積まれない
かくつきは一般的にそのスケジュールが
何か他の処理よりも後回しにされている
または他の処理にブロックされていることを意味する

35 :Name_Not_Found:2014/05/05(月) 01:20:57.53 ID:???.net
>>34
やっぱり積まれませんよね
ありがとうございます

36 :Name_Not_Found:2014/05/05(月) 05:44:20.63 ID:???.net
>>32
フレームか
JSで扱ったこと無いわ
ちょっとググってみる
ありがと

37 :Name_Not_Found:2014/05/05(月) 11:25:50.14 ID:???.net
>>28
たしかにそうかも
LEGACY用の処理とか、無駄なのがいつまでも残ってたりするし
いまだに//NN4とかw

38 :Name_Not_Found:2014/05/05(月) 14:23:12.98 ID:???.net
???
古い時代に書いたコードの話とは関係ないんだが
むしろ、そういうのを一々正すほうが無駄だろ
お前は過去に書いたコードを永久にサポートできるのか?
それともお前の知り合いに未だにNN用コードを新規で書く奴が要るのか?
それを一々気にするのが一番の無駄だが

39 :Name_Not_Found:2014/05/05(月) 15:28:50.60 ID:???.net
ふむふむ
前の会社が運営していたサイトはメンテもしないで思いまんま使うと
なるほど、それなら楽でいいですね

40 :Name_Not_Found:2014/05/05(月) 16:15:12.05 ID:4bZ+ZE3M.net
運営とコードメンテは普通別会社か別部署じゃね?
少なくとも一人の開発者がメンテするかどうかまで決める訳じゃないし関係ないことだ。

41 :Name_Not_Found:2014/05/05(月) 17:28:47.57 ID:???.net
保守を別会社にやらせるのは時代遅れ。
いまは保守を抱えることで、顧客が気がつく前に改善点を見つけ出し、
そこから能動的に提案活動につなげるのが主流だよ。

42 :Name_Not_Found:2014/05/05(月) 17:42:21.17 ID:???.net
lodashの_.maxってMath.maxよりいいんですか?

43 :Name_Not_Found:2014/05/05(月) 21:21:33.15 ID:???.net
lodashに_.isUndefinedがありますが
それならundefinedを返す_.undefinedみたいな関数も必要じゃないですか?

44 :Name_Not_Found:2014/05/05(月) 22:35:35.49 ID:???.net
>>43
標準で用意されている機能をライブラリで用意する必要はない

45 :Name_Not_Found:2014/05/05(月) 23:11:46.46 ID:???.net
それならisUndefinedやisNullもいらないのでは

46 :Name_Not_Found:2014/05/05(月) 23:42:57.73 ID:???.net
>>45
はっきり言って不要だと思うが、リファレンスを読む限りではis系を全て揃えるポリシーがあるのだろう
また、Lo-Dashは定数を返すメソッドorプロパティを作らないポリシーなのだろう
undefined だけでなく、NaN, infenety..を返す機能も用意されていない
http://lodash.com/docs

正直、開発ポリシーを開発者ではない俺に聞かれても困るんだが
そんなことは作者に直接提案するなり、質問するなりすべきではないのか

47 :Name_Not_Found:2014/05/06(火) 00:35:41.81 ID:???.net
定期的にこっちでlodashの話題振ってるのは前暴れたあれにしか見えん

48 :Name_Not_Found:2014/05/06(火) 01:45:10.35 ID:???.net
idの配列と、idをキーに持ったオブジェクトがあります
オブジェクトから、配列に含まれるキーのものだけを抜き出してあらたなオブジェクトを作るのに、
lodashを使い

_(idList).mapValues(function(id) {
return object[id];
});

という書き方に辿り着きました
これ以上シンプルな書き方はありますか?

49 :Name_Not_Found:2014/05/06(火) 02:05:55.43 ID:???.net
>>48
そのものずばりな_.pickというのがある

50 :Name_Not_Found:2014/05/06(火) 02:21:43.33 ID:???.net
なんと
ありがとうございました
ちなみに上記の例はmapValuesではなくmapで、
そして_(idList)のようなオブジェクト指向風の書き方だと結果もlodashオブジェクトになってしまうという
不具合がありました

51 :Name_Not_Found:2014/05/06(火) 04:06:09.50 ID:???.net
lodashにはデフォルトのfor inのように
キーだけを回す関数はないのでしょうか?
forInなどはキーと値をセットで回すようになっています
しかしキーだけが欲しい場合、使わない値を渡すとjshintでエラーになります
keysでキー配列を作ってからforEachすれば目的は達成できますが
こういうやり方しかないのでしょうか?

52 :Name_Not_Found:2014/05/06(火) 07:20:38.94 ID:???.net
>>47
lodashの話題がでただけでいつも過剰反応するのは
お前かい?w

53 :Name_Not_Found:2014/05/06(火) 07:34:29.59 ID:???.net
>>43
> lodashに_.isUndefinedがありますが
> それならundefinedを返す_.undefinedみたいな関数も必要じゃないですか?

必要ない。 なぜならundefinedは代入されていない状態であり、
undefindを変数に代入するというコードは
書いてはいけないものだから。

代入することはないから、_.undefinedは不要だが
チェックすることはあるので、_isUndfinedは必要。

JavaScript標準のやり方をしないのは、コードに説明が必要なものだから
説明が必要なもの=複雑ということ=絶対に間違える。

54 :Name_Not_Found:2014/05/06(火) 07:41:35.88 ID:???.net
_とか付いてんの? 糞ライブラリだな

55 :Name_Not_Found:2014/05/06(火) 07:42:59.99 ID:???.net
C言語では、_関数はgettext用だよ。
クソっていうのは、名前のことじゃないよね。

56 :Name_Not_Found:2014/05/06(火) 08:10:01.34 ID:???.net
>undefindを変数に代入するというコードは
>書いてはいけないものだから。

引数がない時のチェックはundefinedか否かでするから
渡さないことにしたい時のためにundefinedを代入することがあるよ

57 :Name_Not_Found:2014/05/06(火) 08:33:15.40 ID:???.net
>>56
引数チェックは arguments.length 判定が好ましい

58 :Name_Not_Found:2014/05/06(火) 11:26:35.43 ID:???.net
>>40
別会社に運営任せるとぐだぐだになるなんて、よくある話
別部署だってヤバいのにw

59 :Name_Not_Found:2014/05/06(火) 11:30:25.52 ID:???.net
俺も_の宣伝というか、人の作ったものの良さを分かる俺ってスゲーでしょっていう
構ってちゃんのアピールには嫌気がさしてきてるが構わないのが一番

>>56-57
引数のチェックはarguments.lengthとundefined両方の確認が必要
具体的にはES6に合わせるべき
つまりデフォルトパラメータ的なチェックではundefinedかどうか
レストパラメータ的チェックではarguments.lengthを見る必要がある

ただし、変数にundefinedを代入するのは結構挑戦的な行為だとは思う
悪いとは言わない

60 :Name_Not_Found:2014/05/06(火) 12:36:35.25 ID:???.net
lodashの2.5.0ってまだでないのかな?
たしか文字列系が増えてるから
楽しみなんだけど。

61 :Name_Not_Found:2014/05/06(火) 12:49:59.46 ID:???.net
こうなってくると完全にキチガイステマだな。
誰も使わないゴミを作ってしまって焦ってるんだろう
こういうマイナーなプラグインは後で困るから使わない方がいいな。

62 :Name_Not_Found:2014/05/06(火) 12:55:14.45 ID:???.net
スルーしときゃそのうち消えるでしょ

63 :Name_Not_Found:2014/05/06(火) 15:04:50.98 ID:???.net
はい、スルーしてください。つまりただの普通の会話に
いちいち反応しないでください。

64 :Name_Not_Found:2014/05/06(火) 15:13:48.24 ID:???.net
lodash最高なのに
使ってから言えよ、まじで

65 :Name_Not_Found:2014/05/06(火) 15:24:24.22 ID:???.net
スレタイ読めないで普通の会話をしだすキチガイが使うプラグインということか

66 :Name_Not_Found:2014/05/06(火) 15:38:06.53 ID:???.net
お前自分の意見と合わない人を批判したいだけの一番組織では使えないタイプの人間だろ?

67 :Name_Not_Found:2014/05/06(火) 15:53:58.31 ID:???.net
lodashに関する質問はアピールや宣伝などではなく、単純に使っているからです
今まではあくまでユーティリティに使っていましたが、
関数言語的プログラミングがかなり保守性を上げることを実感してきたので、
コアな部分に組み込んで行こうと思っているところです

68 :Name_Not_Found:2014/05/06(火) 16:01:07.45 ID:???.net
ろーだっしゅってあいいーろくでもつかえますか?

69 :Name_Not_Found:2014/05/06(火) 16:05:32.75 ID:???.net
lodashのおかげで関数言語的プログラミングが強力なパラダイム変換だと開眼しました
それを知っている人が作ったライブラリだからでしょう
これからjqueryなみに重要なライブラリになるのは間違いありません
次第にjs本体に組み込まれていくでしょう

70 :Name_Not_Found:2014/05/06(火) 16:08:22.93 ID:???.net
>>60
まじですか
文字系の関数はなんでないのと思っていたので、うれしいです

71 :Name_Not_Found:2014/05/06(火) 16:20:58.27 ID:???.net
>>69-70
ここは質問スレです。雑談は自重してください。
ここまでLo-Dashの質問が増えたのならそろそろライブラリスレに移行すべきではないでしょうか。
ここはライブラリ系質問NGではありませんでしたが、Lo-Dashの質問で他の質問が埋もれるならすみわけする意味は十分にあります。

72 :Name_Not_Found:2014/05/06(火) 16:41:58.48 ID:???.net
啓蒙の意味もありますので、しばらくここで続けたいと思っています

73 :Name_Not_Found:2014/05/06(火) 16:55:58.64 ID:???.net
>>71
言うのは勝手、守るのも勝手、
守らないのも勝手、無視するのも勝手

74 :Name_Not_Found:2014/05/06(火) 16:57:07.03 ID:???.net
>>70
ここに書いてあるよ。 2.5.0の予定
https://github.com/lodash/lodash/wiki/Changelog

75 :Name_Not_Found:2014/05/06(火) 17:10:29.57 ID:???.net
ゴネ方が前と同じだな
ここまで酷いとマッチポンプを疑ってしまう

76 :Name_Not_Found:2014/05/06(火) 17:27:39.77 ID:???.net
>>74
いよいよ新時代突入ですね

77 :Name_Not_Found:2014/05/06(火) 17:30:47.32 ID:???.net
逆に胡散臭い印象を植付けようとしているのかも知れん
必ず批判的なレスが伴なうからググったときに効果的にサジェスト汚染される

78 :Name_Not_Found:2014/05/06(火) 17:34:15.97 ID:???.net
何かアホが湧いているようですね
ライブラリにとってサジェスト汚染など何の意味もありません
そしてjqueryが普通になったようにlodashも普通になるのだから
lodashの質問はごく普通の質問なのです

79 :Name_Not_Found:2014/05/06(火) 17:49:25.29 ID:???.net
>>75
だからスルーしてろって。
こっちは楽しくlodashの話してるから
お前はスルーするんだろう?
それともレスして盛り上げてくれるのかい?w

80 :Name_Not_Found:2014/05/06(火) 17:59:49.66 ID:???.net
ならlodashもjqueryと同じように 別スレ立ててそっちへ誘導するようにしよう

81 :Name_Not_Found:2014/05/06(火) 18:05:34.03 ID:???.net
サイコパスに構うな
lodashは構って貰うための1話題に過ぎん
総合的な話題はプログラム技術板に誘導すべき

82 :Name_Not_Found:2014/05/06(火) 18:35:12.89 ID:???.net
iframe内をスクロールさせる方法というのはないでしょうか?

現在a.htmlというページをiframeでb.htmlから見ています。
a.htmlにはページ下部にトップへ戻るというリンクをjqueryで作成して貼ってありページ内スクロールするようにしていますが
b.htmlからトップへ戻るを選択してもスクロールしません。もちろんa.html内ではちゃんとスクロールするので構文などは間違っていないと思います。

iframe内のトップへ戻るを有効にするにはどうしたらいいのでしょうか?

83 :Name_Not_Found:2014/05/06(火) 18:40:50.99 ID:???.net
コードみなきゃ分からないだろカスが

84 :Name_Not_Found:2014/05/06(火) 18:53:24.08 ID:???.net
>>80
勝手にやれ。俺はここでやる。

>>82
iframe関連はセキュリティの制限があるから
ローカルに置いたら動かなかった気がする。

同じドメインのサーバーにおいて試してみては?

85 :Name_Not_Found:2014/05/06(火) 19:05:30.44 ID:???.net
オブジェクトを入れた配列を使って、
2分ヒープ(BinaryHeap)を作った

オブジェクトのプロパティの値が、
最小のものを取り出す

優先度つきキュー (順位キュー、priority queue)や、
ダイクストラ法 (Dijkstra's Algorithm)で使えます

MIT License です。jsdo.itに発表しました
ttp://jsdo.it/michihito/bGH5

86 :Name_Not_Found:2014/05/06(火) 19:30:32.20 ID:???.net
>>83
大変申し訳ありません

a.html

<script>
$(function(){
$("#pagetop").click(function(){
$("html,body").animate({scrollTop:0},'slow');
return false;
});
});
</script>


コンテンツ多数


<div id="pagetop">
<a href="#">このページのトップへ</a>
</div>


b.html

<iframe src="a.html" sandbox="allow-same-origin allow-forms allow-scripts" seamless></iframe>


となります。

87 :Name_Not_Found:2014/05/06(火) 23:39:57.79 ID:???.net
>>86
「b.htmlからトップへ戻るを選択」とは
div#pagetop の click を意味するのか?

その div は a.html 側に属するように見えるのだが

88 :Name_Not_Found:2014/05/07(水) 04:30:46.75 ID:???.net
>>72
ここは宣伝スレじゃないんですけど

89 :Name_Not_Found:2014/05/07(水) 05:01:59.90 ID:???.net
lodashであるオブジェクトを他のオブジェクトにシャローに追加するにはどうしたらいいのでしょうか?
mixinだと思ったのですが

var a = {
0: 'a'
};
var b = {
1: 'b'
};
_.mixin(a,b);
console.log(a);

とやっても追加されていないようです

90 :Name_Not_Found:2014/05/07(水) 05:36:01.30 ID:???.net
>>89
http://toro.2ch.net/test/read.cgi/hp/1369444026/ へどうぞ

91 :Name_Not_Found:2014/05/07(水) 06:07:25.56 ID:???.net
>>89
extendじゃなかったっけ?
defaultsってのもあるけど

92 :Name_Not_Found:2014/05/07(水) 06:08:02.07 ID:???.net
mergeでもいいのか? 細かい違いで似たようなのがたくさんあるんだよなぁ。

93 :Name_Not_Found:2014/05/07(水) 06:45:38.00 ID:???.net
>>91
_.extendあらため_.assignで出来ました!
ありがとうございました

94 :Name_Not_Found:2014/05/07(水) 07:28:22.05 ID:???.net
似たようなのがたくさんあるってゴミライブラリみたいだな

95 :Name_Not_Found:2014/05/07(水) 09:43:20.75 ID:???.net
ゴミだから使うなって事を広めに来たのか

96 :Name_Not_Found:2014/05/07(水) 12:01:13.64 ID:???.net
啓蒙の為に書き込むのは止めて欲しいな
まあ、啓蒙にすらなってないけど、本人は啓蒙のつもりだろうし

97 :Name_Not_Found:2014/05/07(水) 12:27:27.98 ID:???.net
>>96
使う価値無いってわかったんだから、このスレでもう話すことないよね

98 :Name_Not_Found:2014/05/07(水) 13:33:01.07 ID:???.net
歪んだ正義感ほど厄介な物はない。

99 :Name_Not_Found:2014/05/07(水) 15:20:14.77 ID:???.net
関数型プログラミングはオブジェクト指向の発明に匹敵するパラダイム変換だよね

100 :Name_Not_Found:2014/05/07(水) 16:59:46.67 ID:???.net
>>98
自治厨の根底にあるのは正義感ではなくて恐怖だと思うよ
自分が新しい潮流に置いていかれることが怖いから自分の知らない話題に反発してるだけ

101 :Name_Not_Found:2014/05/07(水) 17:56:21.46 ID:???.net
メソッドチェーンを途中で終わらせるにはどうしたらいいでしょうか?
jqueryにifメソッドを実装し、結果がfalseならそれ以降のメソッドチェーンを実行しない、
ということをやりたいのです

102 :Name_Not_Found:2014/05/07(水) 18:45:45.37 ID:???.net
>>101
そういうプラグインがあったりするけどチェーンをやめた方が健康的だと思う。

103 :Name_Not_Found:2014/05/07(水) 18:50:41.10 ID:???.net
ありがとうございます
プラグインあるんですか
phpのフレームワークでは例外を投げてメソッドチェーンから抜けているようだったので、
jsで外側にcatchブロックを配置するのは難しいかなと思っていたのですが
どうやってるのか気になります

104 :Name_Not_Found:2014/05/07(水) 19:32:15.22 ID:???.net
一応言っておくがjQueryを拡張する話と、そういうプラグインがあるのとは全く別な話
jQueryが普通の作りならifを増設するくらい他愛無いが、やはりナンセンスだろう
もしも例外を投げて安全に抜けられるのならそちらの方がいい
それか、そもそもチェーンを諦める&依存をPromiseに移行する

105 :Name_Not_Found:2014/05/07(水) 20:48:29.82 ID:???.net
lodashは数値にも対応して欲しいな
_(100).increment().valueOf()
みたいなことが出来るように
JS自体が完全なオブジェクト指向言語になるのが一番だけどそれは先のことだろうから

106 :Name_Not_Found:2014/05/07(水) 20:58:25.25 ID:???.net
lodashの話持ち出すのはいいけど、そんな欠陥ばっかじゃ利用者増えないだろ
啓蒙したいなら、もっとベネフィットに焦点当てろよ

107 :Name_Not_Found:2014/05/07(水) 21:06:59.21 ID:???.net
可能性があるがゆえに要望も出てくるんだが?
可能性ないなら「こうなればいい」とすら思わない
単に使わないだけ

108 :Name_Not_Found:2014/05/07(水) 21:11:05.96 ID:???.net
ここのスレの大半がloadashなんて使わないって言ってるのに、「こうなればよい」と思うことを垂れ流しているお前の態度が問題だって言ってるんだよ
問題提起をする前に、loadashを使いたいと思う人間を増やす努力をしろよ

109 :Name_Not_Found:2014/05/07(水) 21:15:11.11 ID:???.net
このスレの大半ワロタw
お前だけだろ
というか俺は啓蒙とか思ってないから。
俺等が話してるのを見てその意味に気付く奴は気付く、それでいい。
数値対応も時間の問題だし。
アイデアを伝播した方が実現が早まるので書いているだけだ。

110 :Name_Not_Found:2014/05/07(水) 21:16:36.98 ID:???.net
そういう目的ならプラグインスレでやれよ
頭わるいな

111 :Name_Not_Found:2014/05/07(水) 21:38:23.71 ID:???.net
var arr = [],n;
for (n in arr) { console.log(n); }
Array.prototype.hoge = function () { return this; }
for (n in arr) { console.log(n); } // hoge
console.log(Array.prototype.push); // function push() { [native code] }

for inで"push"とか"slice"とか出てくるならなんとなく納得してしまうのですがそうはなりません
何か特別な仕様なのでしょうか

112 :Name_Not_Found:2014/05/07(水) 22:21:56.68 ID:???.net
>>105
いちいちlodashに噛み付かなくていいよw

lodashって単語見るたびに
いちいちムカついて書き込まずにはいられないのか?
そんな人生で疲れない?

lodashをNGワードにすれば見なくて済むよ。
それをしないなら、自分でわざわざ見ているのと一緒。

113 :Name_Not_Found:2014/05/07(水) 22:23:18.88 ID:???.net
>>108
> ここのスレの大半がloadashなんて使わないって言ってるのに、「
ここは匿名掲示板なんで、大半とわかることはありえません。

つまり「大半が使わないって言ってるんだ」って
あなたが思い込みたいだけ。
それが露呈されただけのレスの意味しかない。

114 :Name_Not_Found:2014/05/07(水) 22:27:21.72 ID:???.net
lodashを話す奴も叩く奴も質問する奴もスレ違いって事分かって無いのかね?

>>3
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/

115 :Name_Not_Found:2014/05/07(水) 22:28:33.76 ID:???.net
>>114
何がスレ違いなのですか?
その根拠を示すべきだと思いますよ。

116 :Name_Not_Found:2014/05/07(水) 22:36:36.67 ID:???.net
>>105
それは質問ではないのでスレ違い
そしてその手の要望は作者に直接宣言すべき
最近、作者に直接いうべき発言が多くて困る

117 :Name_Not_Found:2014/05/07(水) 22:44:50.14 ID:???.net
>>114
> (9) ライブラリ関連の質問は禁止ではありませんが、ライブラリスレで聞くとより回答を得やすいかもしれません。

118 :Name_Not_Found:2014/05/07(水) 22:45:02.60 ID:???.net
>>116
人にレスするなら、流れを理解するくらいまでさかのぼれよ。
俺等が話してるのを見てその意味に気付く奴は気付く、それでいい。ってかいてるだろ?
日本語分からないのか?

119 :Name_Not_Found:2014/05/07(水) 22:46:12.66 ID:???.net
話についてこれない奴はROMってろよカスが。

120 :Name_Not_Found:2014/05/07(水) 22:47:10.88 ID:???.net
>>117
> (9) ライブラリ関連の質問は禁止ではありませんが、ライブラリスレで聞くとより回答を得やすいかもしれません。

121 :Name_Not_Found:2014/05/07(水) 22:49:50.33 ID:???.net
禁止ではないw

122 :Name_Not_Found:2014/05/08(木) 00:03:36.48 ID:???.net
>>116
作者にこんなのの相手をさせるつもりかいな

123 :Name_Not_Found:2014/05/08(木) 00:05:57.90 ID:???.net
やっぱ前揉めたときにきっちりスレ分けるべきだったんじゃないの

124 :Name_Not_Found:2014/05/08(木) 00:07:02.31 ID:???.net
>>118
>109の事をいってるなら見当違いも甚だしい

125 :116:2014/05/08(木) 00:38:40.79 ID:xkhwF8/N.net
>>122
作者が相手してくれるかまでは保証できない
言い方次第では返信してくれるかもしれないし、無視される事もあるだろうが、それは作者が判断すべき事だと思う

どちらにせよ「ライブラリに関する機能提案」をここでしても有益な事は何もない
作者に直接メールするか、作者が開設しているforum(なければブログ等の何らかのコミュニティ)で議論するのが筋だろう
forumに書き込めば同意する人はレスするだろうし、彼のいう啓蒙もまあ出来なくはない

>>109では「俺等が話してるのを見てその意味に気付く奴は気付く、それでいい。」と豪語しているが、ようするに
・英語を書けないのでここで話題にすれば誰かが作者に提案してくれるだろう
・俺が提案しなくても誰かが提案してるはず。お前もそう思うだろう?
と他人に甘えた希望的観測を持っているに過ぎない
「皆がその考えを持っているなら作者に提案する人が誰もいない」という事実にこの人は気づいていない

なぜ作者に直接言わないのかしらないが、「障害があるなら自分で乗り越えてくれ」と彼に言いたい
俺だって英語苦手だが、頑張って読むし、皆そうしてると思うんだが

126 :Name_Not_Found:2014/05/08(木) 00:46:50.10 ID:???.net
>>125
何度も言いますが、私の場合、目的は啓蒙ですから。
lodashを知らない人がその存在だけでも知ってくれさえすれば、それで十分なのです。

127 :Name_Not_Found:2014/05/08(木) 00:50:47.55 ID:???.net
>>99
最古のスクリプト言語のLispは関数型だ
むしろ関数型→オブジェクト思考と言える
最近関数型言語の実装が進歩して見直されてはいるが

128 :Name_Not_Found:2014/05/08(木) 01:06:01.31 ID:???.net
小技の質問です
var hoge =[];
の配列があったとして
このhogeの中身全部をfuge(hoge[i])の返り値にするとき

for(var i=0; i<hoge.length; i++){
   hoge[i] =fuge(hoge[i]);
}

ってやってるんですが、これをもっと短く、早く、簡単に出来る方法とかありますか?

129 :Name_Not_Found:2014/05/08(木) 01:08:52.69 ID:???.net
十分短いし簡単だと思うよ
死ぬほど早さを求めたいならfugeにhoge渡して配列が変えるようにすれば関数呼び出しが減る

130 :Name_Not_Found:2014/05/08(木) 01:13:44.19 ID:???.net
.map() でいいんじゃね

131 :Name_Not_Found:2014/05/08(木) 01:55:59.06 ID:???.net
>>111
arr.propertyIsEnumerable('hoge')
Array.propertyIsEnumerable('push')

132 :Name_Not_Found:2014/05/08(木) 02:00:02.61 ID:???.net
>>129>>130
ありがとうございます
これでまた最速に近づけた気がします

133 :Name_Not_Found:2014/05/08(木) 02:35:46.88 ID:???.net
>>128
最速なら、hoge.length は変化しないのなら、
変数に代入してから使った方がよいらしい

そうしないと毎回、プロパティ or 関数?が呼ばれる?

134 :Name_Not_Found:2014/05/08(木) 02:42:30.94 ID:???.net
>>126
何度も言うが、啓蒙はスレ違い

135 :Name_Not_Found:2014/05/08(木) 02:46:54.56 ID:???.net
>>130のmapは最速にはほど遠いぞ…

136 :Name_Not_Found:2014/05/08(木) 02:53:01.97 ID:???.net
>>134
この手の流れだと結局のところ反論するにも使ってみなくてはならなくなるんだよ
否定的な意見が強く出れば出るほど、認知度アップが見込める
スレ違いだと思う人がいても、結果が出ている限りやめないよ

137 :Name_Not_Found:2014/05/08(木) 03:17:48.56 ID:???.net
>>136
効果の有効性は問題ではない
質問スレで啓蒙することがスレ違い
自分の目的の為なら他人の迷惑を顧みないところを見るに相当甘やかされて育ってきたんだな

138 :Name_Not_Found:2014/05/08(木) 04:08:31.08 ID:???.net
>>128
そういう時にこそlodashなんだよ
lodashに慣れるとダッサいコードが我慢できなくなるよ

139 :Name_Not_Found:2014/05/08(木) 04:12:48.64 ID:???.net
あぁ「速く」か
関数型だと速くはならないな
全体が筋のいいコードになることでアルゴリズムがブラッシュアップされていくので
小技で汲々とするより、大きなところで速度改善がなされるけどね

140 :Name_Not_Found:2014/05/08(木) 04:31:16.48 ID:???.net
関数型プログラミングは、処理の流れが一本で
一目で何をしているのか分かる。
そして一時変数が激減する。印象としては、なめらかな感じ。
従来のプログラミングは、
「これがこうなって、これがこうなって、そしてこれがこうなって・・」みたいな感じで
ガタガタしてる。
何をしているのか読み取るのに時間がかかる。

141 :Name_Not_Found:2014/05/08(木) 06:40:58.26 ID:???.net
jqueryのメソッドチェーンと関数型プログラミングは
本質的には同じ思想から発している

142 :Name_Not_Found:2014/05/08(木) 08:28:39.67 ID:???.net
>>126
はい、みんなにクソだから使うなと伝えておきますね

143 :Name_Not_Found:2014/05/08(木) 10:04:57.10 ID:Wa+IFk0G.net
http://toro.2ch.net/test/read.cgi/internet/1344004876/93
 ↑ ↑   ↑ ↑   ↑ ↑

144 :Name_Not_Found:2014/05/08(木) 10:53:02.43 ID:???.net
>>132
だから感覚だけで最速に近づいたとか言ってはいけない
兎に角、計測第一だ

145 :Name_Not_Found:2014/05/08(木) 11:08:17.44 ID:???.net
プログラミングすると精神を病んでしまいますか?

146 :Name_Not_Found:2014/05/08(木) 12:22:49.02 ID:???.net
嫌いなら病む
好きなら病まない

147 :Name_Not_Found:2014/05/08(木) 12:36:56.02 ID:???.net
分業化が明確でない俺の会社を見る限り、好き嫌いではなく自分はプログラミングしかできないってしがみついてる奴は確実に病んでる

148 :Name_Not_Found:2014/05/08(木) 13:54:23.17 ID:???.net
このスレにはウサインボルト一派がいる
そいつらは病的なほど速度とコードの短縮を求めてる

149 :Name_Not_Found:2014/05/08(木) 17:33:21.77 ID:???.net
コード短縮と速度は両立しないけどな。

150 :Name_Not_Found:2014/05/08(木) 19:47:55.93 ID:???.net
ネストされたオブジェクトの情報からdomエレメントを作ろうと思います
そういうプラグインみたいのありませんか?
オブジェクトにはclassやidやchildrenのようなキーがある感じです

151 :Name_Not_Found:2014/05/08(木) 19:52:26.57 ID:???.net
>>148
操作の体感が重要なので、キュンキュンにするためなら何でもするつもりだった
一つでも命令が減らせるならそうした
しかしそんなことよりDOMツリーをなるべく単純に保つ方がずっとキュンキュンになることが分かり
俺は変わった

152 :Name_Not_Found:2014/05/08(木) 19:56:15.58 ID:???.net
ループのたびに関数を呼び出すなんてとんでもないと思っていた時代が俺にもありました

153 :Name_Not_Found:2014/05/08(木) 21:17:05.55 ID:Rjk5lK0S.net
本来とは質問の種類が違うかもしれませんが、初心者用スレにJavaScriptの質問は
こちらのスレでとあったのでこちらで質問させていただきます。

環境 Win7 64bit Firefox28
Firefoxでサイト閲覧時にJavaScriptは有効となっているはずなのに(別サイトおよびabout:configでも確認済み)
JavaScriptを用いて表示されるはずの画像が何故か見られません。
関係あるかどうか分かりませんがこの直前にFirefoxのアドオンでJAVAの有効・無効の切り替えをしていました。(ただ現在有効でも無効でもJavaScriptを用いた画像は見られません)
この画像が見られない原因(考えうる可能性でも)および直し方を教えてください。
ちなみに同じサイトをIE11で確認したらその画像を見ることができたのでセキュリティソフト関係ではないと思われます。

154 :Name_Not_Found:2014/05/08(木) 21:28:44.34 ID:???.net
firefox portableを落として
アドオンなど入ってない素のままのfirefoxで閲覧してみたら

155 :Name_Not_Found:2014/05/08(木) 23:59:41.87 ID:???.net
オブジェクトのキーの順番は保証されないのですか?

156 :Name_Not_Found:2014/05/09(金) 00:06:51.30 ID:???.net
オブジェクトのキーの順番とはどのような順番ですか?

157 :Name_Not_Found:2014/05/09(金) 00:11:09.25 ID:???.net
は?書いた順番ですが?

158 :Name_Not_Found:2014/05/09(金) 00:19:49.81 ID:???.net
書いた順番にループでも取り出されのかって意味です

159 :Name_Not_Found:2014/05/09(金) 00:30:36.04 ID:???.net
>>158
取り出す時に使用する構文は何ですか?
コードを書いて下さい

160 :Name_Not_Found:2014/05/09(金) 00:39:40.70 ID:???.net
for in
です

161 :Name_Not_Found:2014/05/09(金) 00:41:12.11 ID:???.net
>>160
for-inは列挙順を保証しません
順序に規則性があるなら配列を使用して下さい

162 :Name_Not_Found:2014/05/09(金) 01:14:20.50 ID:???.net
そうですか・・・
分かりました

163 :Name_Not_Found:2014/05/09(金) 03:59:57.18 ID:???.net
ちなみにオブジェクトに登録したキー順に取り出さないといけないケースってどんなときですか

164 :Name_Not_Found:2014/05/09(金) 04:02:47.18 ID:???.net
考えたのはfor in ついでにdocumentにappendするときですかね?
それならあの方法が使えますが

165 :Name_Not_Found:2014/05/09(金) 06:30:34.88 ID:???.net
[1,2]と[3,4,5,6]という二つの配列を使って
[[1,3],[1,4],[1,5],[1,6],[2,3],[2,4],[2,5],[2,6]]
という一つの配列を作りたいです。
これをlodashでやるにはどうしたらいいでしょうか?

166 :Name_Not_Found:2014/05/09(金) 06:49:44.88 ID:???.net
データベースで言うクロスジョインになると思うのですが
そういう関数は標準ではないようで・・

167 :Name_Not_Found:2014/05/09(金) 08:29:58.10 ID:???.net
そんな複雑なことlodashにはできません

168 :Name_Not_Found:2014/05/09(金) 09:10:38.62 ID:???.net
ゴミだな

169 :Name_Not_Found:2014/05/09(金) 11:32:17.87 ID:???.net
>>164
何をfor-inして何をappendするのですか
appendとはappendChildですか
あの方法とは何ですか
>>156-157もそうですが、内容を省略する癖があるようなので気をつけたほうがいいと思います

170 :Name_Not_Found:2014/05/09(金) 11:34:53.95 ID:???.net
ぶっちゃけ、ここまで書いて理解できないようなら、教えるだけ無駄

171 :Name_Not_Found:2014/05/09(金) 11:45:46.40 ID:???.net
本人は省略したのは周知の事実だからと認識しているのだろうが、本人が想定していない可能性がある事は考えてもいないんだろうな
「〜に決まってます」と返す人はプログラミングに向いてない

172 :Name_Not_Found:2014/05/09(金) 13:11:00.29 ID:???.net
>>153
たぶん、そのサイトを作っているやつは素人なんだろう
IE11にだけ対応している、
HTML5, CSS3タグを使っているんだろう
JavaScriptとは関係ないかも

それか、Firefoxにもデバッガが付いているだろ?
それであちこちに、ブレークポイントを付けて、
動かしたり止めたりしながら、動きを確かめたら?

173 :172:2014/05/09(金) 13:18:36.46 ID:???.net
たぶん作者が、そのサイトを作るときに、
IE11ではテストしたが、Firefoxではテストしなかったのだろう

Firefoxには、HTML5, CSS3, JavaScriptの、
未対応タグや構文間違いをチェックする、ツールは付いていないか?
または、そういうプラグインは無いか?

174 :Name_Not_Found:2014/05/09(金) 15:28:44.46 ID:???.net
>>165の件ですが、rubyにproductというメソッドがあり、
jsで該当するコードも検索で見つけられました
このメソッドもそのうちlodashに実装されそうです

175 :Name_Not_Found:2014/05/09(金) 16:21:48.57 ID:???.net
producthベクトル積だろ

176 :Name_Not_Found:2014/05/09(金) 17:19:24.23 ID:???.net
いや「積」だから
配列だろうがベクトルだろうがproductなんだよ

177 :Name_Not_Found:2014/05/09(金) 19:41:45.12 ID:???.net
本屋いったらsublime textの本があったわ
lodashの本が出るのも時間の問題だな

178 :Name_Not_Found:2014/05/09(金) 19:59:24.14 ID:???.net
>>177
使いこなし方!みたいな?
本の名前教えて

179 :Name_Not_Found:2014/05/09(金) 20:00:36.98 ID:???.net
Web制作者のためのSublime Textの教科書
という本

180 :Name_Not_Found:2014/05/09(金) 21:06:57.05 ID:???.net
Sublime Text www 完全にチョンでワロタwww lodash 推しはチョンだったのかwww すげー納得できたわwww

181 :Name_Not_Found:2014/05/09(金) 22:54:02.62 ID:???.net
何言ってんだこいつはw
頭おかしいな
というか、やっぱりD級プログラマーはネトウヨだったか

182 :Name_Not_Found:2014/05/09(金) 23:10:35.15 ID:???.net
チョン、ネトウヨ、D級プログラマといっている人は皆おかしい

183 :Name_Not_Found:2014/05/09(金) 23:12:47.24 ID:???.net
NO

184 :Name_Not_Found:2014/05/09(金) 23:16:36.34 ID:???.net
>>165
lodashでは直接実装してないけど、lodashを使ったコードがあったよ。

http://stackoverflow.com/questions/12303989/cartesian-product-of-multiple-arrays-in-javascript

function cartesianProductOf() {
 return _.reduce(arguments, function(a, b) {
  return _.flatten(_.map(a, function(x) {
   return _.map(b, function(y) {
    return x.concat([y]);
   });
  }), true);
 }, [ [] ]);
};

185 :Name_Not_Found:2014/05/09(金) 23:25:40.44 ID:???.net
>>184
ありがとうございます
自分が見つけたのもまさにそのサイトでした

186 :Name_Not_Found:2014/05/09(金) 23:29:22.46 ID:???.net
lodashは発祥がunderscoreクローンなので、まだunderscoreの記事の方が多いようですね
そろそろunderscoreを乗り越えて独自実装に力を入れていってほしいです

187 :Name_Not_Found:2014/05/09(金) 23:35:25.53 ID:???.net
productはperlとかで実装したことあるけど、
時々使うんだよね。lodashに入ってなかったとは。


>>186
いや、トップにデカデカとかいてあるやんw

http://lodash.com/
Features not in Underscore

188 :Name_Not_Found:2014/05/09(金) 23:37:49.90 ID:???.net
Underscoreではなくlodashを使う理由は
速度が速いからではなく、関数が多いからだと
思っていたけど。

189 :Name_Not_Found:2014/05/10(土) 00:03:15.24 ID:???.net
完全互換ではないけど、まだそこまで独自実装に積極的でないような?
その程度の意味

190 :Name_Not_Found:2014/05/10(土) 01:42:07.66 ID:???.net
>>184
それはlodashである必要性が皆無だね
標準で十分実装できる

191 :Name_Not_Found:2014/05/10(土) 01:56:33.83 ID:???.net
forループの方が速いしコードも短い。使い所が理解できてない人が無闇に宣伝しても、ネガティブキャンペーンにしか見えない

192 :Name_Not_Found:2014/05/10(土) 02:02:46.09 ID:???.net
>>153
まずコンソールを確認する
何も表示されてなかったらデバッガを開いてもう一度実行する
エラーがあれば止まるが止まらなかったら適当なところにブレーク張ってステップ実行していくしかないな

193 :Name_Not_Found:2014/05/10(土) 03:53:32.89 ID:???.net
以前firefoxのコンソールで__proto__が使えたと思うのですが
chrome(じゃなくてもいいですが)で同じようなプロパティ
もしくは参照できるようなものはありませんでしょうか
よろしくおねがいします

194 :Name_Not_Found:2014/05/10(土) 04:53:30.45 ID:???.net
最初の文字だけ大文字にする一番簡単な方法はなんですか?

195 :Name_Not_Found:2014/05/10(土) 04:57:17.71 ID:???.net
>>191
じゃあこの回答者が質問者の使ってないunderscore.jsを使ってコードを書いて、
16件の評価をもらっているのはなんでなんですかねぇ?
しょうもないケチを付ける前に自分のスキルを振り返った方がいいですよ

196 :Name_Not_Found:2014/05/10(土) 05:01:11.16 ID:???.net
能力のある人間は、未知の現象に当たった時、
「自分は分からないが何か理由があるのだろう」と考える
無能な人間は短絡的かつ可能性の低い理由に飛びつき、
「相手が愚かだからだろう」と考える
したがって未知の出来事への反応を見れば、
人間の能力というものはおおかた正確に見極められる
>>190>>191がどっちなのかは、もちろん言うまでもないですね

197 :Name_Not_Found:2014/05/10(土) 05:10:13.47 ID:???.net
lodashはS級アプリのtweetdeckにも使われるんだが。
謎の否定をしてる珍プログラマーはtweetdeckレベルのモン作れるようになってから偉そうなこと言えよ

198 :Name_Not_Found:2014/05/10(土) 05:33:52.29 ID:???.net
lodashをダシに、自身の正当性や論理を展開する浅ましさ
lodashをタテに、スレ違いの荒らし行為を正当化させていると言うべきか

199 :Name_Not_Found:2014/05/10(土) 06:01:01.09 ID:???.net
珍グラマー何言ってるか分からんわ
もう黙っとけよ、それが一番いいから。
誰にとってもな

200 :Name_Not_Found:2014/05/10(土) 07:30:13.50 ID:???.net
ライブラリの話は禁止されてないからスレ違いですら無いしなぁ。

なんでlodashがこのスレででてくるか。
たとえばjQueryはDOMライブラリだからDOMの話に登場するのは当たり前。

lodashはなんのライブラリかというと標準関数のライブラリなんだよね。
JavaScriptの基本文法を拡張するライブラリのようなもの

たとえば、forEachメソッドに相当する_.eachがあったりする。
なのでこのスレででてくるのは当然なんだよね。

201 :Name_Not_Found:2014/05/10(土) 08:22:55.15 ID:???.net
つまりlodashはゴミみたいなもんってこしか

202 :Name_Not_Found:2014/05/10(土) 09:19:21.27 ID:???.net
lodashそのものはゴミではない

スレ違いを指すものは、質問者に成りすまして啓蒙活動をすることだ
何を自分の都合の良いように解釈しているのか

203 :Name_Not_Found:2014/05/10(土) 10:05:48.16 ID:???.net
>>202

俺は見抜いてるんだー。質問者になりすまして啓蒙活動してるって
見抜いてるんだ。匿名掲示板だけど、全部わかってるんだー。

って言いたいわけ?

204 :Name_Not_Found:2014/05/10(土) 10:09:36.67 ID:???.net
俺の解釈は、啓蒙活動だ。
お前は、都合のいい解釈をするな。

205 :Name_Not_Found:2014/05/10(土) 10:42:01.95 ID:???.net
>>196
未知の現象に当たったのは君だよ
君は>>184のほとんどのメソッドが標準で実装されている事実を知らないでしょ
だからそんな頓珍漢なレスになるんだよ

206 :Name_Not_Found:2014/05/10(土) 10:48:12.12 ID:???.net
>>203
少なくとも私はそう思っている。
最終的にはこのスレの質問者と回答者に判断を委ねるが、あなたはその2者のどちらでもない。

あなたは、匿名を盾に相手の虚を付くことではなく、質問者に成りすまし啓蒙活動をしていないことを証明すべきだ。
匿名という名の盾を外し、個として発言して下さい。

lodashが下位互換もので使えないと言われれば、相手の能力を蔑み、
lodashが必要とされていないと言われれば、匿名掲示板を盾にマイノリティー派として見下す。

一体あなたの発言の何を信じればいいのか。

207 :Name_Not_Found:2014/05/10(土) 10:50:07.00 ID:???.net
匿名掲示板で啓蒙活動?寝ぼけるのもいい加減にしろ。

208 :Name_Not_Found:2014/05/10(土) 10:52:25.22 ID:???.net
ライブラリの質問はスレ違いではないですが、Lo-Dashの質問が増えたので住み分けの為にライブラリスレに移行を促したら、>>72で啓蒙を理由に拒否されました。
これには今でも納得できません。

209 :Name_Not_Found:2014/05/10(土) 10:54:19.18 ID:???.net
仕方ないから次から厳格にライブラリはスレチにすればいいよ
このスレはもう諦めとけ

210 :Name_Not_Found:2014/05/10(土) 10:56:51.59 ID:???.net
>>72,126は啓蒙を理由にLo-Dashの雑談をしてる
雑談は明らかにスレ違い

211 :Name_Not_Found:2014/05/10(土) 11:05:21.00 ID:???.net
俺もライブラリはライブラリスレでいいと思う
>>1の(9)を書き換えていいんじゃないかな

212 :Name_Not_Found:2014/05/10(土) 11:27:05.83 ID:???.net
テンプレ修正するなら雑談禁止ルールも欲しいな
あんまいいたくなかったが、ここまで雑談が増えると目に余る

213 :Name_Not_Found:2014/05/10(土) 11:51:11.19 ID:???.net
現時点で雑談禁止までしなくていいよ
自己主張のために人を不快にするほど過度なライブラリの話をしたのが問題なんだから

214 :Name_Not_Found:2014/05/10(土) 11:57:04.81 ID:???.net
件のやつを除けば質問を肴にした雑談が殆どだしいいんでね
それで回答者の数を確保してる側面もあると思う

215 :Name_Not_Found:2014/05/10(土) 12:11:08.00 ID:???.net
>>194
最初の1文字だけ取り出してあっぱーしたらいんじゃね?

216 :Name_Not_Found:2014/05/10(土) 12:13:58.22 ID:???.net
ここまで自作自演w

217 :Name_Not_Found:2014/05/10(土) 12:14:37.32 ID:???.net
ろーだっちゅを啓蒙するには、専用スレ建てて有用な議論交わし続けることだよね
ここでゴミのようなソースや欠点さらしつづけても、便利だとも思わないし選択肢から消えるだけ
まあ、それが目的なのかもしれないが

218 :Name_Not_Found:2014/05/10(土) 12:20:32.83 ID:???.net
はい、それが目的なので
ここでずっとやりますよw

やらない理由がない。

219 :Name_Not_Found:2014/05/10(土) 12:37:04.50 ID:???.net
見たくない人は、lodashをNGワードに指定すればいいだけ。

220 :Name_Not_Found:2014/05/10(土) 12:49:10.85 ID:???.net
皆さんは __proto__ を何て読んでいますか?
単に「プロト」ですか?
「アンスコアンスコプロトアンスコアンスコ」ですか?

221 :Name_Not_Found:2014/05/10(土) 12:54:38.94 ID:???.net
>>218
> やらない理由がない。
lodash信者に加えて、lodash否定派まで参加したら争いが絶えない

222 :Name_Not_Found:2014/05/10(土) 13:09:59.34 ID:???.net
>>221
だから、それが嫌ならこのスレから出ていくか、
lodashをNGワードに指定すればいいって言ってるんだよ。

223 :Name_Not_Found:2014/05/10(土) 13:20:08.53 ID:???.net
>>222
自分から迷惑行為をしておいて「出てけ」というか
自己中を極めてるな

224 :Name_Not_Found:2014/05/10(土) 13:25:56.03 ID:???.net
>>223
えとさ、でていかなくていいんだよ。
でもこの状況は変わらない。

どうせ書き込み相手を2ちゃんねるから遮断することも出来ないんだし、
ネットをやめさせることも出来ない。どうやってもとめることは不可能。

だよね? 違う?

文句の書き込みでスレ埋めるってことが君がしたいことなの?

225 :Name_Not_Found:2014/05/10(土) 13:32:36.18 ID:???.net
>>224
> でもこの状況は変わらない。
いや、lodash否定派が進んで争いの種を撒いてるんでしょ
自分から争いの種を撒いておいて何他人行儀な話しぶりなのさ
最初から否定派に回らず、スルーすればいいでしょ

「だから、それが嫌なら」という書き方から>>218と同一人物と判断したけど、違うのならわかる書き方をしてくれよ
「だから」なんて紛らわしすぎる

226 :Name_Not_Found:2014/05/10(土) 13:43:30.14 ID:???.net
>>225
じゃあ俺はもうお前を無視するよ。

ただし無視するのはお前とこのくだらない話題だけで、
lodashに関連する話題が出たらレスはする。

その時、お前は何をする?
それだけ聞かせてくれ。

227 :Name_Not_Found:2014/05/10(土) 13:54:25.69 ID:???.net
>>226
もう君が何を言ってるのかさっぱりわからない
・結局、あなたが>>218だったのかどうかが不明
・「lodashをNGワードに指定すればいい」といったと思えば、「lodashに関連する話題が出たらレスはする」と先の発言を否定する事をいってる
自己矛盾に気がついてないのか

> その時、お前は何をする?
こちらの質問は無視して自分だけ質問するのか
その発言に矛盾があってひょっとしたら理解してくれるかもと思ったら指摘するが、それ以外はスルーする

228 :Name_Not_Found:2014/05/10(土) 14:16:56.34 ID:???.net
匿名掲示板では先の自分の発言を自分ではないことにすることが出来る
いくらでも他人になりすませるので矛盾があっても「それは自分ではない」と言い訳できる
会話が成り立たなくて当然だな

229 :Name_Not_Found:2014/05/10(土) 14:29:34.03 ID:???.net
>>227
「lodashをNGワードに指定すればいい」
というのは見たくない人に対してで

「lodashに関連する話題が出たらレスはする」
は、勝手にするってことだろ?

230 :Name_Not_Found:2014/05/10(土) 14:30:45.82 ID:???.net
>>227
もしかしてNGワードの意味がわからなかったのか?
2ちゃんねるブラウザでNGワードに登録すると
その書き込みは見えなくなるんだよ。
見たくないものは見なくて済むよって言うこと。

231 :Name_Not_Found:2014/05/10(土) 15:09:39.64 ID:???.net
>>203 この挑発的な煽り方と一緒だな。じゃあハッキリ言ってやろうじゃないか。

>>229-230
誰にも賛同されず、スレルールすら無視して話そうとする、
お前の存在がこのスレには要らない。

お前が居なくなれば、通常通りスレは進行し、皆楽しく有意義に雑談・技術やアドバイスを話し合える。
お前が居なくなれば、スレのテンプレも変える必要もなく、NGワードも使う必要がなくなる。
お前が居なくなれば、ライブラリの話も異常に警戒することもなくなる。

それでも居続けるお前は荒らし、荒らし以外の何者でもない。

232 :Name_Not_Found:2014/05/10(土) 15:43:50.83 ID:???.net
うるさーい(´・ω・`)

233 :Name_Not_Found:2014/05/10(土) 15:49:44.11 ID:???.net
ECMAScript5で追加されたArrayのフィルター系メソッド(every,some,forEach,map,filter,reduce,reduceRight)
を使えば大抵事足りる(IE9以降が必要だが)

234 :Name_Not_Found:2014/05/10(土) 17:00:10.37 ID:???.net
>>233
IE9移行が必要でしょ?

そういう時にlodash使えばいいわけよ。
古いブラウザ(XPサポートおわっちゃったが、そのIE6までも)対応している。

これからもJavaScriptは拡張されるし、ブラウザごとの差異はなくならないので
クロスブラウザを考えると、こういうライブラリが無くなることはないだろう。

235 :Name_Not_Found:2014/05/10(土) 17:03:38.07 ID:???.net
あ、IE6対応で思い出したけど、lodashの3.0.0は
IE6、IE7サポートが終了する。

2.5.0はサポートされているんで、古いブラウザ対応する
最後のバージョンなんだよね。IE6でも実装可能なメソッドが
できるかぎり搭載されるはずだから、早く出ないかな。

https://github.com/lodash/lodash/wiki/Roadmap

236 :Name_Not_Found:2014/05/10(土) 17:19:51.75 ID:???.net
ユーティリティライブラリ vs Polyfillライブラリみたいな?

237 :Name_Not_Found:2014/05/10(土) 17:38:16.14 ID:???.net
Polyfillっていうのは、標準が決まらないと作れないんだよね。
あくまで標準を満たしていないものに、対応機能を追加するものだから。

それはそれであるといいんだけど、進化はどうしても遅くなっちゃうの。

238 :Name_Not_Found:2014/05/10(土) 17:44:32.25 ID:???.net
ECMAScript 5 はもう十分に安定してるから問題ない

239 :Name_Not_Found:2014/05/10(土) 17:51:03.41 ID:???.net
ECMAScript 5が安定しているかどうかではなくて、
ブラウザがサポートしているかどうか。

http://kangax.github.io/compat-table/es5/

あと、やっぱりECMAScript 5だけじゃ少ない。

240 :Name_Not_Found:2014/05/10(土) 18:07:49.35 ID:???.net
Polyfillライブラリを使えば問題ないってことだろう
少なくとも>>184はそう

241 :Name_Not_Found:2014/05/10(土) 18:09:41.16 ID:???.net
>>205
知らないわけないだろww
低能は他人を自分以下に設定したがるから面倒くさい
lodashを使うという発想はES3基準にするところから始まってるんだよ

242 :Name_Not_Found:2014/05/10(土) 18:14:48.89 ID:???.net
ES3でもES5やES6の機能を使えるって凄いな。

243 :Name_Not_Found:2014/05/10(土) 18:14:49.01 ID:???.net
範囲が広くて利用者が多いPolyfillライブラリが無いってことだよね

244 :Name_Not_Found:2014/05/10(土) 18:15:33.40 ID:???.net
Polyfillは所詮Polyfillで、標準機能よりも
多くのことは出来ないからなぁ。

245 :Name_Not_Found:2014/05/10(土) 18:23:21.19 ID:???.net
lodashはpolyfill以上のものだから。
jqueryもそうだけど良く出来たライブラリはJSの機能を予言的に実現していく。
ライブラリについて話すということは未来のJSについて話すことと同じ。
標準機能という過去にしがみつくか、ライブラリという未来に手を伸ばすか
そこがB級以下とA級以上の差だろうな

246 :Name_Not_Found:2014/05/10(土) 18:30:15.49 ID:???.net
jQueryやlodashも標準仕様全ての上位互換じゃないから、一長一短だよね
独自の仕様を基礎にするか、標準や草案の仕様を基礎にするか

247 :Name_Not_Found:2014/05/10(土) 18:30:22.58 ID:???.net
今時、IE8をサポートしなきゃいけない状況はそう多くないな
IE6は尚更だ

248 :Name_Not_Found:2014/05/10(土) 18:31:43.72 ID:???.net
IE8の駆逐作業はXPサポート切れ1年前あたりから急激に行われてきた気がする

249 :Name_Not_Found:2014/05/10(土) 18:41:07.00 ID:???.net
そもそも、lodashに限らず、特定のライブラリに依存したくないや

250 :Name_Not_Found:2014/05/10(土) 18:41:35.26 ID:???.net
>>246
そもそもJavaScriptは標準ライブラリが貧弱だからな。

あとpolyfillのような標準に準拠させるためのライブラリっていうのは
異端な存在で、普通のライブラリは、標準仕様では提供されていない
機能を提供するものだ。

251 :Name_Not_Found:2014/05/10(土) 18:42:31.96 ID:???.net
これが現実

IE8 50ヶ月連続1位 - 4月ブラウザシェア
http://news.mynavi.jp/news/2014/05/07/066/

252 :Name_Not_Found:2014/05/10(土) 18:58:35.74 ID:???.net
>>246
> jQueryやlodashも標準仕様全ての上位互換じゃないから

他の言語を使っている人からすれば意味不明だなこれ。

たとえばここにRubyのライブラリがたくさんあるわけだが
https://rubygems.org/
それらは標準仕様すべての上位互換か?

ライブラリに何を求めているのだろうか?
古いブラウザ用に標準仕様を満たすためのもの?
そんなわけがない。標準仕様を実装するのはライブラリの仕事ではない。

長らくJavaScriptの世界にライブラリと呼べるものがなかったからだろうか
ライブラリを互換性を保つためのものだと勘違いしている人がいる。

253 :Name_Not_Found:2014/05/10(土) 19:02:41.85 ID:???.net
>>250
jQueryやlodashも、polyfillするコード群も、標準仕様の機能を含むからライブラリと呼ぶべきではないってこと?

254 :Name_Not_Found:2014/05/10(土) 19:05:07.11 ID:???.net
>>253
含むだけなら、「Polyfill + ライブラリ」だろ
屁理屈言ってるんじゃねーよw

255 :Name_Not_Found:2014/05/10(土) 19:11:59.58 ID:???.net
重要なのは関数言語的パラダイム変換とライブラリが連動しているということ
標準機能だけで「悟り」を得るのは不可能
rubyでもpythonでも、もちろんJSでも不可能だった悟りを俺はlodashで得た

256 :Name_Not_Found:2014/05/10(土) 19:12:44.51 ID:???.net
jQueryやlodashに含まれてるのは
ブラウザ間での非互換性を解決する機能であって
標準仕様そのものじゃないけどな。

たしかprototype.jsには標準機能を満たすための
実装が含まれていたけど、早期実装してしまったために
あとから標準になった仕様と同じ名前のメソッドで
動きが違うという別の問題を起こしてしまったけど。

257 :Name_Not_Found:2014/05/10(土) 19:57:50.21 ID:???.net
何この終わりのない宗教戦争
>>246が全てを語ってると思うけどな
それ以上はただの個人的な感情のぶつかり合いだ

258 :Name_Not_Found:2014/05/10(土) 20:01:53.19 ID:???.net
意味不明w
すべてを語っているどころか情報量ゼロじゃねーか

259 :Name_Not_Found:2014/05/10(土) 20:20:59.69 ID:???.net
とりあえず、>>184のコードでlodashが糞遅いということを示しておこう。
http://jsperf.com/productlodashvsrow

forループよりも10倍以上遅いんだがw 予想以上に糞w

260 :Name_Not_Found:2014/05/10(土) 20:21:11.55 ID:???.net
jQueryやlodashも標準仕様も一長一短
どっちがいいかケースバイケース
lodashで悟りを得るとか言ってるのはただの信者でしょ

261 :Name_Not_Found:2014/05/10(土) 20:48:13.33 ID:???.net
一長一短ww
「右の反対は左」みたいなことを言って悦に入れる頭の悪さが羨ましいわ

262 :Name_Not_Found:2014/05/10(土) 20:53:10.50 ID:???.net
>>259
それはまともな反論だな
たしかに単純に速度だけで言うと、当然ながら遅くなる
コストの高い関数呼び出ししまくりだし。
でもボトルネック以外のところは10倍遅くても体感は変わらないし、
その遅さを余裕で帳消しにするメリットがあるわけだ

263 :Name_Not_Found:2014/05/10(土) 21:36:31.44 ID:???.net
>>262
帳消しにするメリットとは?

264 :Name_Not_Found:2014/05/10(土) 21:40:14.77 ID:???.net
>>263
たとえば、JavaScriptのforEach。
なんでforがあるのに作られたと思う?
それは、作るのが早く、バグが少なくなるから。

lodashは基本的にこのような考え方で作られている。
もっといい方法があるということは、JavaScript自身で
証明されているんだよ。

lodashはそれを先行実装しているだけ。
ECMAScript 10ぐらいになったら、lodashの
今のメソッドを全部実装するかもね。

265 :Name_Not_Found:2014/05/10(土) 21:41:31.83 ID:???.net
なるほど、未来のJavaScriptを今すぐに
使えるようになるってわけだな。

266 :Name_Not_Found:2014/05/10(土) 21:50:35.98 ID:???.net
未来のJavaScriptをすぐに使えるっていうのは
わかりやすいメリットだな。

forEachもそうだけど、JavaScriptを見ていると
クロージャーを引数に取る関数ってのが増えてきている。

アロー演算子というクロージャーを引数にとる関数を
使いやすくする機能も出来た。

この流れは主流になるんじゃないかな。というか、もう主流かな。
lodashを使えばこれが今すぐ現実になる。

267 :Name_Not_Found:2014/05/10(土) 22:39:15.09 ID:???.net
>>264
「作るのが早く、バグが少なくなるから」の具体例は?
forに対してforEachのメリットは何となくわかるけど、あなたの説明には具体性がなく説得力にかける

それにforEachはES5であってlodashではないからlodashのメリットが全く伝わってこない
lodashが先行仕様になってる理由も説明できてないように読めるけど、もっと具体的に話して欲しい

268 :Name_Not_Found:2014/05/10(土) 22:48:01.17 ID:???.net
なんでかまうのか

269 :Name_Not_Found:2014/05/10(土) 22:50:51.82 ID:???.net
アロー演算子とあるか、ライブラリで演算子を拡張できるものなのか

270 :Name_Not_Found:2014/05/10(土) 22:52:58.98 ID:???.net
オブジェクト指向以後は、オブジェクト指向より前には戻れない
しかし、オブジェクト指向のメリットを言葉で説明するのはなかなか難しい
関数型言語のメリットもこれに似ている
「これは良いものだ」と分かるが、良さを説明するのは難しい
しかし一言で言うと、コードが美しくなる

271 :Name_Not_Found:2014/05/10(土) 22:55:19.02 ID:???.net
ES6 にアロー関数(Arrow Function)ならあるね
これはなかなか面白い試みだと思う
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-arrow-function-definitions
https://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference/arrow_functions

272 :Name_Not_Found:2014/05/10(土) 23:04:36.97 ID:???.net
>>267
まずさ、前提として
lodashにforEach相当のものがあるって知ってる?

あと、lodashのAPI一覧。forEachのお仲間だよ。
http://lodash.com/docs

Arraysだけでこれだけある。Collections、Functions、Objects、Utilities、その他を入れるとこの4倍
_.compact
_.difference
_.findIndex
_.findLastIndex
_.first
_.flatten
_.indexOf
_.initial
_.intersection
_.last
_.lastIndexOf
_.pull
_.range
_.remove
_.rest
_.sortedIndex
_.union
_.uniq
_.without
_.xor
_.zip
_.zipObject

273 :Name_Not_Found:2014/05/10(土) 23:14:27.37 ID:???.net
熱い議論の途中ですまんが
今から使うならunderscoreよりもlodashを使うべきなの?

274 :Name_Not_Found:2014/05/10(土) 23:15:48.09 ID:???.net
>>272
「lodashに多数の関数が定義されてる」だけではメリットとはいえないと思う
それならjQueryの方がよほどたくさんの関数やpluginがあるよ
多数の機能が揃っているだけならplugin数の多いjQueryに軍配があがる
というか、「たくさんの機能があるからいい」は短絡に過ぎると思うけど、如何?

lodashにあるforEachはES5相当の機能だから、lodashを使う必然性がない
lodashのメリットにはなりえないよ

275 :Name_Not_Found:2014/05/10(土) 23:16:37.70 ID:???.net
>>272
ゴミ箱いっぱいって感じだな

276 :Name_Not_Found:2014/05/10(土) 23:16:50.52 ID:???.net
underscoreって単独でも使えるけど、
backboneのおまけみたいで気持ち悪いんだよね。

lodashの方が関数多いはずだし、
lodashよりメリットあるの?

277 :Name_Not_Found:2014/05/10(土) 23:17:36.10 ID:???.net
>>273
用途に合ったライブラリを選べばいいだけで、無条件にどちらを選ぶってものでもないと思うよ
両方使ってみて自分の感性に合うライブラリを使用するのが一番いい

278 :Name_Not_Found:2014/05/10(土) 23:17:48.28 ID:???.net
>>274
便利な関数が沢山定義されているのは
明らかなメリットでしょ?

279 :Name_Not_Found:2014/05/10(土) 23:19:51.80 ID:???.net
lodashとECMAScriptを見てると、
JavaScript標準ライブラリの進化した先がlodashに見えてくるよ。

forEachもそうだし、将来lodashの幾つかが
JavaScriptにバックポートされてもおかしくないよね。

280 :Name_Not_Found:2014/05/10(土) 23:20:20.45 ID:???.net
>>278
便利な関数ならね
でも、便利な関数が多数あることを説明できてないでしょ?

281 :Name_Not_Found:2014/05/10(土) 23:22:23.48 ID:???.net
lodashの関数が便利かどうかなんて
いまさら低レベルなこと言わないよねw

これらの関数ってJavaScriptに搭載されていないだけで
他の言語では普通に標準ライブラリだったりする。

たとえばRubyに同等のものがたくさんある。
http://docs.ruby-lang.org/ja/search/class:Array/version:2.1.0/

282 :Name_Not_Found:2014/05/10(土) 23:27:01.67 ID:???.net
>>281
lodashの関数が便利なのは当たり前で知らない人は低レベルなのか
何か話が合わないようなのでこの辺で失礼するよ
気を悪くしたらごめんね

283 :Name_Not_Found:2014/05/10(土) 23:30:19.38 ID:???.net
>>276-277
レスさんくす

undersocreっておまけのような存在だったのか
知らなんだ

最近ここを覗くようになって頻繁にlodashが出てくるから
underscoreと比べどんなメリットがあるのかと思ったんだ
underscoreとlodashとの差分がポイントの1つなんだね。

ともあれ >>277 の言うように実際に自分で使ってみて判断するのが一番なんだろうな

284 :Name_Not_Found:2014/05/10(土) 23:30:37.20 ID:???.net
Array.prototype.forEach の起源は Lo-Dash なのでしょうか?
私は Firefox が起源だと思っていたのですが…。

285 :Name_Not_Found:2014/05/10(土) 23:30:45.43 ID:???.net
いえいえ消えてくれるのは
本望なのでどんどん去ってください。

286 :Name_Not_Found:2014/05/10(土) 23:34:15.20 ID:???.net
>>284
forEach、つまりクロージャーを引数に取る
ループは関数型言語起源だよ。
lodashどころかECMAScritpでもFirefoxでもない

そして、関数型言語起源のものを
JavaScriptで使えるようにしたのが
lodashなんだ。

ECMAScriptではそのほんの一部しか採用されていないが、
lodashであれば更に多くの関数型言語起源のものが使える。

forEachがそうだがJavaScriptは関数型言語起源のものを採用しつつある。
だからlodashを使うということは、将来のJavaScriptを使っているようなものなんだよ。

287 :Name_Not_Found:2014/05/10(土) 23:38:56.41 ID:???.net
>>283
確かに Lo-Dash の話題が多いようだけど、一部の狂信的な信者も常駐している感があるのでお気をつけを
全部が信者とはいわないけど、Lo-Dash 関係の話題は自分で検証して事実確認するぐらいには疑っても損はないと思うよ
結局、自分で使うものだからね
他人に判断を委ねるぐらいなら、自分で検証して判断するのが一番いい

288 :Name_Not_Found:2014/05/10(土) 23:41:46.83 ID:???.net
lodashの関数の有用性は今更考えることじゃないな。
他の言語の焼き直しなんだし。

289 :Name_Not_Found:2014/05/10(土) 23:43:42.84 ID:???.net
var hoge;の中の数値があるか?ってとき
if(!hoge && hoge!=0)
ってやってるんですがもっと一発でフィニッシュできる方法ありまっか?

290 :Name_Not_Found:2014/05/10(土) 23:45:04.60 ID:???.net
話題が多いっていうかこの板じゃID出ないからね

291 :284:2014/05/10(土) 23:46:10.65 ID:???.net
>>286
せっかく回答いただいたのに申し訳ないのですが、私の質問内容に沿う回答ではないようです。
foreach が PHP 等の他言語に存在することは知っていますが、「それをJavaScriptに始めに取り込んだ実装が何であるのか」を質問しています。
>>279で Lo-Dash が forEach の先行実装かのように説明されていたので気になっていましたが、そういうわけでもないんですね。

292 :Name_Not_Found:2014/05/10(土) 23:47:33.89 ID:???.net
>>289
それ、実は難しい問題だよ。
何を数値とみなすのか。

たとえば、16進数表記は数値としてみなすのか?
指数表記は数値としてみなすのか?

無限大(Infinity)は数値としてみなすのか。

そこを答えてくれないかな?

293 :Name_Not_Found:2014/05/10(土) 23:47:53.22 ID:???.net
>>289
「数値があるか」の定義が不明だけど、typeof hoge === 'number' でいいんじゃない?

294 :Name_Not_Found:2014/05/10(土) 23:49:30.85 ID:???.net
しらんけどforEachはFirefoxが先行だとしても
それ以外はlodashが先行しているのが多いよ。
あ、underscoreが先行かもしれないね。

295 :Name_Not_Found:2014/05/10(土) 23:51:34.88 ID:???.net
相変わらず、lodash信者は適当な事ばかりいう

296 :Name_Not_Found:2014/05/10(土) 23:53:53.96 ID:???.net
そういやあのバカは
ちゃんとNGワードにしたんだろうか?
あ、このレス見えないようにlodashって入れておこうwww

297 :284:2014/05/10(土) 23:55:07.19 ID:???.net
>>294
そうですか、わかりました。
参考までにお聞きしますが、lodashが先行している機能は何でしょうか?

298 :Name_Not_Found:2014/05/10(土) 23:56:35.61 ID:???.net
>>297
ここに書いてるよ。
http://lodash.com/
Features not in Underscore

299 :284:2014/05/10(土) 23:59:54.13 ID:???.net
>>298
"Features not in Underscore" は先行仕様の説明ではありませんが…。

300 :Name_Not_Found:2014/05/11(日) 00:00:18.81 ID:???.net
underscoreのコンセプトを深化させたのがlodash
今からわざわざunderscoreをする必要はないんじゃないかな?

301 :Name_Not_Found:2014/05/11(日) 00:01:59.17 ID:???.net
>>299
Underscoreよりも先ってことは
先行って考えてあってるよ。

そこに書いてある機能は
JavaScritにない機能だから

302 :284:2014/05/11(日) 00:12:37.28 ID:???.net
>>301
どうも私の意図が期待通りに伝わっていないように見受けられます。
私が意図するのは Lo-Dash が ECMAScript の先行仕様となった機能です。
つまり、ECMAScript が定義される前に Lo-Dash がその関数を定義したことを証明しなければなりません。
例えば、ES5 の Array.prototype.forEash は Lo-Dash にもありますが、ES5 が定義されてから Lo-Dash で実装されたのならそれは Lo-Dash が先行したとはいいません。
ES5 ないし ES6 と同じ関数が Lo-Dash にあるだけでは Lo-Dash が先行したことにはならないのです。
お分かり頂けますでしょうか。

> そこに書いてある機能はJavaScritにない機能だから
JavaScript という仕様はありませんが、何を指すのでしょうか。

303 :Name_Not_Found:2014/05/11(日) 00:17:32.01 ID:???.net
疑問に託けて荒らし弄って遊ぶのも良くないと思うの

304 :Name_Not_Found:2014/05/11(日) 00:35:24.69 ID:???.net
setTimeout( function(){
〜処理〜
}.apply(this), 10);
//}.call(this), 10);
//}.bind(this), 10);
settimeoutの中ではthisにグローバルがセットされてしまうから
対策として、apply、call、bindのどれかを使おうと考えているのですが、
どれを使えばいいでしょうか?
この3つのメソッドって違いがよくわかりません。

305 :Name_Not_Found:2014/05/11(日) 00:56:10.02 ID:???.net
>>1-5のテンプレ更新した
http://jsfiddle.net/fH4cC/32/show/

>>209,211
反映した

>>212-214
反対意見があるようなので様子見
提案リストにあがっている
「質問の消化を最優先に。議論や雑談は禁止じゃないけど流れを見極めて。(※元は質問の体をしていても質問者を置き去りにして住人同士で議論や雑談になってきたときに冷静さを取り戻すためにも。自主的に我に返れなくても冷静な人に気付かせてもらうためにも。)」
は一考の余地があるかもしれないが、暫定保留

306 :Name_Not_Found:2014/05/11(日) 01:15:23.28 ID:???.net
lodashのデメリットはbackboneには使えないことかな?
と思ったけどbackboneでも使えるんだ
http://lodash.com/custom-builds
それならunderscoreを使う理由はないね

307 :Name_Not_Found:2014/05/11(日) 01:18:27.66 ID:???.net
>>304
感覚的にはbindだが、背景が不明な状況で確かな事はいえない
3つの違いを理解できるまで使いこなしてから決めるのが最善だと思う

308 :Name_Not_Found:2014/05/11(日) 01:38:14.03 ID:???.net
call=thisを指定して関数呼び出し出来る。引数を列挙させなくてはいけない。ES3でも可
apply=thisを指定して関数呼び出し出来る。引数を配列で渡せる。ES3でも可
bind=thisを指定する別の関数を生成。ES5以降

bindはコールバック関数を作る時に使う。ES3対応させたいならlodashを使えばいい。

309 :Name_Not_Found:2014/05/11(日) 03:23:40.17 ID:???.net
これはひどい。もうlodashをNGに入れざるをえないな。。。

310 :Name_Not_Found:2014/05/11(日) 04:13:40.31 ID:???.net
勝手にそうしとけよw
アンチlodashの原始人どもは邪魔なだけだから

311 :Name_Not_Found:2014/05/11(日) 04:32:03.08 ID:???.net
>>304
bind

312 :Name_Not_Found:2014/05/11(日) 04:35:18.09 ID:???.net
document.getElementByIdを
jqueryでするのはどうやればいいですか?

313 :Name_Not_Found:2014/05/11(日) 05:05:59.97 ID:???.net
>>312

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>GGRKS</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
</head>
<body>
<script>
$(function(){ window.open('http://www.google.co.jp/search?q=jquery+getelementbyid'); });
</script>
</body>
</html>

314 :Name_Not_Found:2014/05/11(日) 05:24:53.57 ID:???.net
ありがとうございました

315 :Name_Not_Found:2014/05/11(日) 05:29:31.12 ID:???.net
あるid要素の有無を知りたい時には
$('#'+id).length
を調べるのが普通ですか?

316 :Name_Not_Found:2014/05/11(日) 06:05:11.49 ID:???.net
>>315
いいえ。#は不要です。

317 :Name_Not_Found:2014/05/11(日) 06:19:48.09 ID:???.net
testというidの要素を示すセレクターは
#test
ですよね?

318 :Name_Not_Found:2014/05/11(日) 06:47:20.09 ID:???.net
>>317
そうですね。それは「id要素」ではありませんが。

319 :Name_Not_Found:2014/05/11(日) 08:28:20.00 ID:???.net
bindはIE9移行じゃないと使えない。

320 :Name_Not_Found:2014/05/11(日) 08:45:20.36 ID:???.net
lodashなら使えるよ

321 :Name_Not_Found:2014/05/11(日) 09:02:54.40 ID:???.net
素朴な疑問だけど、将来的にthisが呼び出し元に依存しないようになることってありえるのかな・・・?

322 :Name_Not_Found:2014/05/11(日) 09:18:18.66 ID:???.net
アロー関数いいよね。

たとえばこんなコード(配列の各要素を3倍した配列を返す)が

_.map([1, 2, 3], function(num) { return num * 3; });

たったのこれだけになる。
_.map([1, 2, 3], num => num * 3);

323 :Name_Not_Found:2014/05/11(日) 09:20:44.68 ID:???.net
>>321
アロー関数がそうだよ。

http://openweb.co.jp/2013/01/18/%E6%B0%97%E3%81%AB%E3%81%AA%E3%82%8B%EF%BC%81%E5%A4%A2%E3%81%8C%E3%81%82%E3%82%8B%EF%BC%81javascript-next-ecmascript6-1-es6%E3%81%AE%E5%9F%BA%E7%A4%8E%E7%9F%A5%E8%AD%98%E9%96%A2%E6%95%B0/

324 :304:2014/05/11(日) 09:28:44.12 ID:???.net
みなさまありがとうございます。
bindを使ってみます。
bindは、goodpatrsに定義の仕方が載っていたので、
使えないブラウザ向けに使おうと考えてます。
lodashは今度調べます。

また、以前質問しました
var obokata={};
obokata.value="捏造";
obokata.stap=(function(){alert(this.value)});
obokata.stap();//捏造
obokata.stap2=(function(){alert(this.value)})();//undefined

メソッドを即時実行関数式にした場合は、callを使うのがベストなのでしょうか?
obokata.stap2=(function(){alert(this.value)}).call(obokata); //捏造

325 :Name_Not_Found:2014/05/11(日) 10:03:29.25 ID:???.net
ゲーム制作などのサンプルコードをみていると
まるでパラパラ漫画のように一旦全ての要素を削除後、一から要素を構築というコードが多いのですが
要素を使いまわすことに何かデメリットでもあるのでしょうか?

326 :Name_Not_Found:2014/05/11(日) 11:19:35.05 ID:???.net
>>325
そのサンプルコードが糞なだけじゃない?

デスクトップアプリ、一般のゲームアプリでは全部消してから
再描画するのは、ごく普通のやり方。

でもそれをDOMの世界に持ち込んでもだめだろう。
WebGLとかを使うなら、全部消して再描画でいいけどね。

たんにDOMを使ったゲーム作成に最適化されてないだけかと。

327 :Name_Not_Found:2014/05/11(日) 13:25:38.30 ID:???.net
>>318
「id要素」とは何?

328 :Name_Not_Found:2014/05/11(日) 13:40:27.42 ID:???.net
JavaScriptは最初から関数が第一級オブジェクトの先鋭的な関数型プログラムができる言語と言える
ライブラリ使わなきゃ無理な訳じゃない

329 :Name_Not_Found:2014/05/11(日) 13:41:34.04 ID:???.net
>>325
そのゲームは2Dか3Dのどっち?

330 :Name_Not_Found:2014/05/11(日) 13:45:28.06 ID:???.net
>>292>>293
簡単なようで難しい問題だったんですか。プログラミングってのは難しいですな

331 :Name_Not_Found:2014/05/11(日) 14:08:24.52 ID:???.net
>>328
いや、JavaScriptが関数型プログラムができる言語だから
関数型プログラミングに適したライブラリが出来たわけ。
このライブラリがなければ、自力実装しなきゃいけないよ?

332 :Name_Not_Found:2014/05/11(日) 14:09:01.77 ID:???.net
ライブラリなんていらないだろ。
全部自分で作ればいいだけ。

333 :Name_Not_Found:2014/05/11(日) 14:10:38.08 ID:???.net
というか、if(!hoge && hoge!=0)が成立するのって何?

334 :Name_Not_Found:2014/05/11(日) 14:12:30.11 ID:???.net
面倒くさい書き方をするな。

if (hoge || hoge==0) でいいだろ

335 :Name_Not_Found:2014/05/11(日) 14:18:19.10 ID:???.net
あ、割り込まれた
>>333>>330

336 :Name_Not_Found:2014/05/11(日) 15:53:30.89 ID:???.net
>>274
古いブラウザでも、動くんだろう
新しいブラウザなら、そのブラウザにあるforEachを使う

バグを減らして、開発コストを抑えるのが、目的

337 :Name_Not_Found:2014/05/11(日) 17:04:55.19 ID:???.net
>>335
レスアンカーつけるようにするといいよ

338 :Name_Not_Found:2014/05/11(日) 18:51:55.13 ID:???.net
数値で、なおかつ0より上ってことだろ?
だから>>334はおかしい

339 :Name_Not_Found:2014/05/11(日) 18:54:20.41 ID:???.net
if (_.isNumber(val) && val > 0)
これでいいじゃん

340 :Name_Not_Found:2014/05/11(日) 20:11:36.94 ID:???.net
0より上なら
if (val > 0)
でいいじゃん
何で変な判定入れるの?

341 :Name_Not_Found:2014/05/11(日) 20:16:04.17 ID:???.net
var a = true;
console.log((a>0));

これでもtrueになるから

342 :Name_Not_Found:2014/05/11(日) 21:22:56.27 ID:???.net
ライブドアブログで記事をランダムに表示させています。
トップページからその機能を使うと問題ありませんが、個別記事ページからランダムで表示しようとすると
別のリンクに飛んでしまいます。 このようなものをライブドアブログのブログパーツのうちフリーエリアに追加しています。

<script type="text/javascript">
var article = new Array();
article[0] = "表示させたいページのURL";
article[1] = "表示させたいページのURL";
article[2] = "表示させたいページのURL";
article[3] = "表示させたいページのURL";
article[4] = "表示させたいページのURL";
article[5] = "表示させたいページのURL";
n = Math.floor(Math.random()*article.length);
document.write("<a href='"+article[n]+"'>");
</script>
<img src="表示させたい画像のURL" alt="ランダム記事" border="0">


参考にしたのは以下のリンクからです。
http://blog.livedoor.jp/kimagure_ryu/archives/1545845.html


トップページからサイドカラムにあるランダム表示ボタンを押すと、
設定してある記事のURLのうちランダムで記事を表示してくれます。

しかし、その後ランダムで表示された記事から、もう一度ランダム表示ボタンを押すと
設定していないURLに飛んでしまいます。
404 NOT FOUNDというページに飛んでしまいます。


ランダムで記事を表示するには一度トップページに戻ってから再度ボタンを押さなければランダムで表示することが出来ない状態を解消したいのですが、方法がわかりません。
設定してあるURLはすべて確認しましたので、間違いないはずです。

343 :Name_Not_Found:2014/05/11(日) 21:54:31.51 ID:???.net
>>342
URLが相対指定だったりしない?

344 :Name_Not_Found:2014/05/11(日) 22:02:33.40 ID:???.net
>>342
とりあえず、素人サイトを参考にするな。気持ち悪いコードだ。

まず、 new Array(); は使わない。そして配列への代入は一気にやれ。
必要ないのにインデックス番号を書くな。変数名は複数形にしろ。

更に推奨で、HTML5ならtype属性はもう要らない。
グローバル変数nを使うな。aタグが閉じられていない。

borderはスタイルシートで消せ

<style>
img { border: none }
</style>
<script>
var articles = [
 "表示させたいページのURL",
 "表示させたいページのURL",
 "表示させたいページのURL",
 "表示させたいページのURL",
 "表示させたいページのURL",
 "表示させたいページのURL",
];
var n = Math.floor(Math.random() * articles.length);
document.write("<a href='"+article[n]+"'><img src='表示させたい画像のURL' alt='ランダム記事'></a>");
</script>

345 :Name_Not_Found:2014/05/11(日) 22:09:48.66 ID:???.net
おっと、このままじゃarticlesもnもグローバルだったなw
さてここからはjQueryとlodashを使おう。

<style>
img { border: none }
</style>
<script>
$(function() {
 var articles = [
  "表示させたいページのURL",
  "表示させたいページのURL",
  "表示させたいページのURL",
  "表示させたいページのURL",
  "表示させたいページのURL",
  "表示させたいページのURL",
 ];
 $('#random-url').attr('href', articles[_.random(articles.length)]);
});
</script>

<a id="random-url"><img src='表示させたい画像のURL' alt='ランダム記事'></a>

346 :Name_Not_Found:2014/05/11(日) 22:27:50.67 ID:???.net
なんでaタグ内はダブルクォーテーションなのにimgタグ内はシングルクォーテーションなのですか

347 :Name_Not_Found:2014/05/11(日) 22:35:58.55 ID:???.net
エスケープすんのがめんどくせーからだろ

348 :Name_Not_Found:2014/05/11(日) 23:34:28.08 ID:???.net
下のAタグはbodyタグ内のやつじゃないの?
あとこんな短いコードに二つもライブラリ
必要?

349 :Name_Not_Found:2014/05/11(日) 23:39:51.27 ID:???.net
なにそれマジレス?

350 :Name_Not_Found:2014/05/11(日) 23:39:53.02 ID:???.net
>>327
>>315に聞いて下さい。
言葉通りに受け取るならタイプセレクタを使います。

351 :Name_Not_Found:2014/05/11(日) 23:41:42.23 ID:???.net
>>301のレスがないけど、逃げたのかな

352 :Name_Not_Found:2014/05/12(月) 00:02:15.43 ID:???.net
>>350
id要素という固有名詞なんてないのですから、指定のidの要素と分かるのでは?
固有名詞があるかのように言いだしたのはあなたなのに人になすりつけないで下さい

353 :Name_Not_Found:2014/05/12(月) 00:07:20.55 ID:???.net
>>350
いや、>>315が言っている(思っている)id要素ってのは、>>317でわかるんだけど、
あなたがわざわざ「」付きで書いているから、別のそういう用語があるのかと思って

で、了解した。回答ありがとう

354 :Name_Not_Found:2014/05/12(月) 00:11:40.46 ID:???.net
lodashでユーザ独自のプラグインを作ることは出来ないのでしょうか?

355 :Name_Not_Found:2014/05/12(月) 00:50:05.23 ID:???.net
>>340
_.randomって普通にMath.random使えよ
マジ糞だな

356 :Name_Not_Found:2014/05/12(月) 00:50:59.22 ID:???.net
間違えた>>345だった

357 :Name_Not_Found:2014/05/12(月) 01:00:41.17 ID:???.net
狂信的lodashアンチの方が糞だろ
常識で考えて

358 :Name_Not_Found:2014/05/12(月) 01:03:15.54 ID:???.net
http://jsperf.com/lodash-random-vs-math

ベンチマークではlodashの方が相当遅いな
同じ機能なら標準を使った方がいいか

359 :Name_Not_Found:2014/05/12(月) 01:08:01.53 ID:???.net
parseIntは基数を書かなくていいのでlodashのを使っていますが
標準の方がいいと思う人いますか?

360 :Name_Not_Found:2014/05/12(月) 01:21:21.35 ID:???.net
標準がいいに決まってる

361 :Name_Not_Found:2014/05/12(月) 01:28:32.44 ID:???.net
Note: This method avoids differences in native ES3 and ES5 parseInt implementations.
See http://es5.github.io/#E.

つまり互換性のためか
lodashを使っておいた方が間違いはないな

362 :Name_Not_Found:2014/05/12(月) 01:33:03.44 ID:???.net
効いてる効いてる

363 :Name_Not_Found:2014/05/12(月) 01:36:38.51 ID:???.net
アンチ謎の効果あり宣言w
アンチは計測不能なほど小さいパフォーマンス改善のために
潜在的に危険なコードな放置しておけばいいんじゃないですかぁ?

364 :Name_Not_Found:2014/05/12(月) 01:43:13.77 ID:???.net
>>354
普通にlodashオブジェクトにメソッド追加すれば出来るよ

365 :Name_Not_Found:2014/05/12(月) 01:44:47.55 ID:???.net
>>354
一応記事見つけた
http://codemill.studio-connect.com/2013/03/more-lo-dash-utilities-using-_-mixin/

366 :Name_Not_Found:2014/05/12(月) 01:51:54.67 ID:???.net
>>364-365
mixinはそのためのものだったのですかー
ありがとうございます

367 :Name_Not_Found:2014/05/12(月) 02:05:31.79 ID:???.net
今日の対決ではlodashアンチの方が押され気味だねw
lodashに興味が湧いてきたよ

368 :Name_Not_Found:2014/05/12(月) 03:29:22.11 ID:???.net
なあに、こっちは対決なんかしておらず
簡単に書ける方法を教えているだけよ。
それがたまたまlodashだったってだけで。

369 :Name_Not_Found:2014/05/12(月) 04:10:00.71 ID:???.net
_.mixin({
push: function(array,item){
array.push(item);
return array;
}
});

これだけでpushが追加できました
しかもメソッドチェーンにも対応していて
_([]).push('a').push('b').valueOf()
みたいな書き方も出来ます
lodash最高\(^o^)/

370 :Name_Not_Found:2014/05/12(月) 04:15:29.06 ID:???.net
ちなみに.push().push()するような場面はどのようなときにありますか

371 :Name_Not_Found:2014/05/12(月) 04:19:34.87 ID:???.net
ただのサンプルだろう?

372 :Name_Not_Found:2014/05/12(月) 04:29:49.82 ID:???.net
まさかテストコードに実用性を求められるとはw
今までpushやshiftしたい時はtapで関数を渡してたのでスッキリしました〜

373 :Name_Not_Found:2014/05/12(月) 05:38:34.03 ID:???.net
>>344
シングルクオートとダブルクオートが逆。

374 :Name_Not_Found:2014/05/12(月) 05:45:06.05 ID:???.net
>>373
はい?

375 :Name_Not_Found:2014/05/12(月) 05:51:56.18 ID:???.net
lodashのメソッドは通常非破壊的なようです

var a = ['a','b','c'];
_(a).first(1);
console.log(a);//aには変化なし
_(a).push('d');
console.log(a);//aも変化している

破壊性と非破壊性に意識的になってないと思わぬトラブルになるかもしれません

376 :Name_Not_Found:2014/05/12(月) 06:10:56.75 ID:???.net
>>375
ライブラリのくせに余計な気を使わせるとかゴミだな

377 :Name_Not_Found:2014/05/12(月) 06:16:08.90 ID:???.net
いやpushなどは自分で追加したので、普通は気にする必要ないですよ?

378 :Name_Not_Found:2014/05/12(月) 07:01:12.35 ID:???.net
pushすら無いのかよゴミだな

379 :Name_Not_Found:2014/05/12(月) 08:30:42.64 ID:???.net
_.assignも破壊的なので、必ず非破壊的というわけではないですね
このあたりはまぁ普通のJSプログラミングでも意識する部分なので
lodashが最高なのは恒真ですが

380 :Name_Not_Found:2014/05/12(月) 08:35:35.58 ID:???.net
今日調べて分かったことを日記帳に書いたような、ドキュメントの例文レベルの議題と解決例を書き連ねて、このままスレが終わるのもアリかもね。
次スレからライブラリの話は禁止で。

381 :Name_Not_Found:2014/05/12(月) 08:37:29.62 ID:???.net
自分に分からないことを書かれたからって拗ねるのはやめて下さいね
迷惑なので

382 :Name_Not_Found:2014/05/12(月) 08:49:03.47 ID:???.net
今の状況を見て今更疑問に思ったんだけど
このスレなんでID出るプログラム板じゃなくてWeb製作に立ってんの?

383 :Name_Not_Found:2014/05/12(月) 09:02:00.46 ID:???.net
「オブジェクトの指定した属性に指定した値を加算する」が出来る
標準関数はlodashにないですよね?
{
x:100,
y:-100
}
などを渡すと、x+=100, y+=-100をする、というようなものです

384 :Name_Not_Found:2014/05/12(月) 09:35:36.95 ID:???.net
そりゃ必要ないからだろ

385 :Name_Not_Found:2014/05/12(月) 09:46:56.64 ID:???.net
lodashで破壊的メソッドを実行する時、元オブジェクトは変えたくないのでクローニングしようと思い
_(a).clone().hoge()
とすると、cloneはチェーンに対応していないようでエラーが出ました。
なのでクローンしてラッパーオブジェクトを返すプラグインを追加し、
cloneのかわりにそれを使ったら、想定通りに動作しました。
動いたのでいいのですが、標準機能では同じことは出来ないのでしょうか?

386 :Name_Not_Found:2014/05/12(月) 11:17:04.69 ID:???.net
mapがあるだろ
ライブラリに走る奴は標準機能をよく理解してない傾向がある

387 :Name_Not_Found:2014/05/12(月) 11:36:07.22 ID:???.net
lなんとかに触るときはアンカつけてくれ
一緒に消えるから

388 :Name_Not_Found:2014/05/12(月) 12:01:51.33 ID:???.net
>>353
一応、XHTMLであれば「id要素」を定義することが可能です。
括弧付で書いたのは「あなたの質問したid要素とは異なりますよ」と明示する為。

確かに意地悪な回答でしたが、不明瞭な質問(使用ライブラリを明示しない、id要素というオレオレ用語を使う)には端的な回答を返すことにしています。
過去に不明瞭な質問に憶測で回答して痛い目にあったことがあり、自己防衛のためです。
- 憶測で回答して間違っていた(初回回答時に確認すればよかった)
- 憶測で回答がよくないと思い、不明瞭な事項の確認を求めたところ、「〜に決まってますよね。わからないんですか?」と煽られた

相手にってはどう転んでも非難されるので、あの回答になりました。
ただ、>>353さんのように横で見ている人がわかりづらいのは申し訳ないと思っています。
内容を伴った指摘であれば回答する意思はあるので、お手数ですが、ご容赦下さい…。

389 :Name_Not_Found:2014/05/12(月) 18:46:23.33 ID:???.net
>>388
あなたの回答は必要ありませんので、
曖昧な質問だと思ったら今後はスルーして下さい
アスペ的な突っ込みを防ぐための言葉遣いは、今後もするつもりはありませんので。
人間の言葉は伸縮性があり、
伸縮性のある言葉を自在に使いこなす人間の知性を俺は信用しているのです
曖昧な言葉は、いわばアスペフィルタです
アスペの回答はいりませんので、スルーして下さい

390 :Name_Not_Found:2014/05/12(月) 18:48:58.34 ID:???.net
>>389
気を害してしまったのなら申し訳なく思います。
人を傷つけるつもりは無かったので、今後は発言を控えます。

391 :353:2014/05/12(月) 20:03:52.72 ID:???.net
まーいいじゃん

変な質問はスルーってのは正しいとは思うけどね

392 :Name_Not_Found:2014/05/12(月) 20:50:04.08 ID:???.net
delete演算子に()を付けていたのですが、これだと関数と間違えることがあるので
()を付けない方がいいのでしょうか?

393 :Name_Not_Found:2014/05/12(月) 20:59:45.13 ID:???.net
>>375
> lodashのメソッドは通常非破壊的なようです

それは関数型言語的な考え方だよ。

細かい説明は端折るけど、関数型言語は原則的に
非破壊的な操作を行うためバグが減るとされている。

394 :Name_Not_Found:2014/05/12(月) 21:02:23.07 ID:???.net
>>392
つけない方がいい。

var value = (1) みたいで気持ち悪い。

395 :Name_Not_Found:2014/05/12(月) 21:03:33.09 ID:???.net
typeof も()つけないほうがよいですか?

396 :Name_Not_Found:2014/05/12(月) 21:07:56.52 ID:???.net
>>394
ありがとうございました

397 :Name_Not_Found:2014/05/12(月) 21:12:14.02 ID:???.net
・つける理由がない。
・つけない理由がある。
・どちらでもいいなら省略した方が楽


これを満たしているのなら、明らかにつけるべきではない。

398 :Name_Not_Found:2014/05/12(月) 21:53:00.84 ID:???.net
・けつげわっさわさ
・けつげわっさわさでなくない
・どちらでもいいならけつげわっさわっさが好き


これを満たしているのなら、明らかにけつげわっさわさ

399 :388:2014/05/12(月) 22:59:53.63 ID:REvGzu8p.net
>>390は私ではありません。
相手をするつもりはありませんが、自分の意図しない発言なので念の為。
idは出すべきでしたね…。気をつけます。

400 :Name_Not_Found:2014/05/12(月) 23:13:23.40 ID:???.net
ご愁傷様
>>1の (10) を見れない質問者が多いね

401 :Name_Not_Found:2014/05/12(月) 23:14:53.37 ID:???.net
殊勝なところがあると思ってこっちも心を痛めてたらw
安心しました

402 :Name_Not_Found:2014/05/12(月) 23:20:27.94 ID:???.net
ところで、もう新スレがたってるのはなぜだろう?
正直、早すぎると思うのだが
http://toro.2ch.net/test/read.cgi/hp/1399764134/

403 :Name_Not_Found:2014/05/12(月) 23:24:56.32 ID:???.net
>>399
お前らの糞みたいなくだらないレスの投げ合いでスレが消費されるのは鬱陶しいから、
丸く収めようと思って謝っておいたんだから、のこのこ出てくんなよカスが

404 :Name_Not_Found:2014/05/12(月) 23:41:09.66 ID:???.net
>>402
テンプレ修正されてないんだよな
後は察して欲しい

405 :Name_Not_Found:2014/05/12(月) 23:47:06.57 ID:???.net
>>393
関数型言語の特徴として非破壊的だと見たことはあったものの、
使ったことがないのでピンと来ませんでしたが
実際に使ってみると良く分かりますね

406 :Name_Not_Found:2014/05/12(月) 23:53:24.30 ID:???.net
>>395
演算子で括弧をつける必要があるのは優先順位を変更したい場合だけ
括弧の意味を考えれば他の演算子でもわかると思う

407 :Name_Not_Found:2014/05/13(火) 00:10:24.36 ID:???.net
returnに括弧付ける奴の多い事よ。

408 :Name_Not_Found:2014/05/13(火) 00:17:11.04 ID:???.net
var a = {};
a.value = 'hogehoge';
a.hoge = function() { return this.value; }
a.fuga = 3;

みたいにfunctionのうしろだけセミコロンをつけないのはなぜですか

409 :Name_Not_Found:2014/05/13(火) 00:20:15.60 ID:???.net
>>408
セミコロンはつける方が正しい

410 :Name_Not_Found:2014/05/13(火) 00:22:10.97 ID:???.net
>>408
それは付けるべき

411 :Name_Not_Found:2014/05/13(火) 00:26:04.34 ID:???.net
他の言語やってれば、つけなければならないくらい分かるだろうに

412 :Name_Not_Found:2014/05/13(火) 00:37:51.33 ID:???.net
>>408
俺の場合
1行→つける
複数行→つけない
みたいな感じでやってる

413 :Name_Not_Found:2014/05/13(火) 00:40:38.85 ID:???.net
>>412
あなたの考え方を聞いているのではなく、なぜセミコロンをつけないのが一般的なのかを聞いております

414 :Name_Not_Found:2014/05/13(火) 00:48:42.76 ID:???.net
var a ={};
var a ={a,b,c};
var a ={
a,
b,
c
}
あながち間違ってないかもその暗黙の了解ルール

415 :Name_Not_Found:2014/05/13(火) 00:51:59.22 ID:???.net

b,
c
}a=1;

or


b,
c
};a=1;

416 :Name_Not_Found:2014/05/13(火) 00:52:38.98 ID:???.net
>>413
セミコロンはつけるのが一般的
君の認識が間違い

417 :Name_Not_Found:2014/05/13(火) 00:53:34.75 ID:???.net
>>416
function() {
return this.value;
}
この場合はつけませんよね

418 :Name_Not_Found:2014/05/13(火) 00:54:42.27 ID:???.net
JAVAではセミコロンがないとパースエラーになりますが、javascriptはならないのですね
言語使用が雑ですね

419 :Name_Not_Found:2014/05/13(火) 00:55:14.16 ID:???.net
min化したときにセミコロン無しや/**/してないとうわぁっとなる問題はどうしたらいいですか

420 :Name_Not_Found:2014/05/13(火) 00:56:04.51 ID:???.net
>>417
その場合は付けなくて言い
>>408は付けるべき
>>414も付けるべき

421 :Name_Not_Found:2014/05/13(火) 00:58:34.17 ID:???.net
>>417
SyntaxError なのでそれ以前の問題

422 :Name_Not_Found:2014/05/13(火) 01:00:12.05 ID:???.net
セミコロンを省略すると発見しにくいバグが生じる例を
どこかで見たことがある

基本的に付けても無害なので
>>417 のような例だろうが何も考えずに付けた方がいいとも言える

423 :Name_Not_Found:2014/05/13(火) 01:08:11.75 ID:???.net
Rubyでは付けないのが普通らしい。
だけど付けないと変な解釈をすることが有るってのは
やっぱり有るらしい。

424 :Name_Not_Found:2014/05/13(火) 01:33:54.51 ID:???.net
function () {}



var a = function () {};

は別物。上は関数宣言、下は関数式。宣言には付けない、式には付ける。

425 :Name_Not_Found:2014/05/13(火) 01:37:15.02 ID:???.net
たしかに複数行の式だと忘れやすいけど
jshint入れたら解決

426 :Name_Not_Found:2014/05/13(火) 01:42:10.58 ID:???.net
if(a==hoge){}
には、セミコロンはつけませんね

427 :Name_Not_Found:2014/05/13(火) 01:44:57.98 ID:???.net
ExpressionとStatementの違いが分かりません

428 :Name_Not_Found:2014/05/13(火) 01:45:22.30 ID:???.net
>>426
それは文
式と文と宣言は区別すべき

429 :Name_Not_Found:2014/05/13(火) 01:49:41.26 ID:???.net
文と宣言に違いはあるのですか?

430 :Name_Not_Found:2014/05/13(火) 01:53:43.57 ID:???.net
関数宣言(function文)は文に含まれる

431 :Name_Not_Found:2014/05/13(火) 01:58:23.48 ID:???.net
それなら、式と文は区別すべきでよいのではないでしょうか?

432 :Name_Not_Found:2014/05/13(火) 02:02:31.70 ID:???.net
>>430
FunctionDeclaration と Statement は別物
function 文は存在しない

433 :Name_Not_Found:2014/05/13(火) 02:05:46.70 ID:???.net
a();
function a() {}

これはエラーにならない。

a();
var a = function () {};

これはエラーになる。

a=1;
function a() {}
a();

これもエラーになる。

434 :Name_Not_Found:2014/05/13(火) 02:28:41.69 ID:???.net
var a = 0;

一行にすると何故必要になるか分かる
var func = function () {}; (a == 0) ? 1:0; //typeof(func) -> "function"

セミコロンを外すと意図しない動作に
var func = function () {} (a == 0) ? 1:0; //typeof(func) -> "number"

宣言の場合はセミコロンが有ってもなくても意図通りの結果に
function b(){} (a == 0) ? 1:0; //typeof(func) -> "function"
function b(){}; (a == 0) ? 1:0; //typeof(func) -> "function"

435 :Name_Not_Found:2014/05/13(火) 05:18:59.79 ID:???.net
lodashで、reduceなどのコールバック関数中に、
そこで使う変数を送り込みたい時はどうするのがベストなのでしょうか
今は外のスコープに書いてクロージャの形にしてますが、
これは関数言語的じゃないように思います

436 :Name_Not_Found:2014/05/13(火) 06:15:24.49 ID:???.net
>>435
無名関数の中に実行したい関数を入れる
array.reduce(function() {

437 :Name_Not_Found:2014/05/13(火) 06:26:06.44 ID:???.net
>>435
途中で送信してしまった

1.無名関数の中に実行したい関数を入れる
array.reduce(function() {
func(引数)//実行したい関数
})

2.関数を返す即時関数の引数を使う
array.reduce((function(仮引数) {
return function() {
//処理
}
})(実引数)

438 :Name_Not_Found:2014/05/13(火) 09:40:33.28 ID:???.net
>>403
うぜえ

439 :Name_Not_Found:2014/05/13(火) 09:50:37.46 ID:???.net
セミコロンの自動挿入は意図がよくわからないな
混乱するだけだと思うんだけど

440 :Name_Not_Found:2014/05/13(火) 14:22:00.57 ID:???.net
>>437
なるほど
即時関数はよさそうです!
ありがとうございました

441 :Name_Not_Found:2014/05/13(火) 21:53:07.63 ID:???.net
ループしながら判定してヒットした時点でループを抜ける
という処理がありますが、関数言語的ループの場合は例外を投げて外に出すのでしょうか?

442 :Name_Not_Found:2014/05/13(火) 22:43:10.66 ID:???.net
lodashではfalseを返せばループは終わらせられるようです
メソッドチェーンを中断させる機構があれば尚いいのですが・・

443 :Name_Not_Found:2014/05/13(火) 22:49:36.46 ID:???.net
なんか最近ココでlodashって単語よく見かけるんですが
流行してるんですか?

444 :Name_Not_Found:2014/05/13(火) 23:04:48.99 ID:???.net
>>441
function exec() {}
function judgment() {}
function loop() {
var result = arg[1](arg[0]);
if (arg[2](result)) {
loop();
} else {
return result;
}
}
result = loop(arg,exec,judgment);

>>443
触らない方がいい

445 :Name_Not_Found:2014/05/13(火) 23:10:04.00 ID:???.net
444はないなぁ

446 :Name_Not_Found:2014/05/13(火) 23:13:03.78 ID:???.net
>>444
もしかして、あんた、アンチlodashの
うるさい人?

ちょっとそのコード見て、馬鹿にしたくなったんで
アンチlodashとイコールならレベル低すぎで面白いなぁとw

447 :Name_Not_Found:2014/05/13(火) 23:22:04.63 ID:???.net
>>443
他の人は知りませんが、少なくとも俺の中では流行ってますよ^^
オブジェクト指向以来のインパクトです

448 :Name_Not_Found:2014/05/13(火) 23:24:21.92 ID:???.net
function exec() {
return arguments[0];
}
function judgment() {
return arguments[0]!==10;
}
function loop() {
var result = arguments[2](arguments[1][arguments[0]]);
if (arguments[3](result)) {
return loop(arguments[0]+1,arguments[1],arguments[2],arguments[3]);
} else {
return result;
}
}
var arg = [0,1,2,3,4,5,6,7,8,9,10,11],
idx = 0;
result = loop(idx,arg,exec,judgment);

いい加減すぎたな。ちゃんと書くとこうか
loopの中のloopにreturn付けて、配列で引数を渡して
関数型で縛るとこうなるだろ?ようするに面倒なんだよ

449 :Name_Not_Found:2014/05/13(火) 23:26:09.59 ID:???.net
偉そうなわりにコードが汚いw

これがアンチlodashの正体かって
思うと笑えてくる。

450 :Name_Not_Found:2014/05/13(火) 23:28:10.47 ID:???.net
lodash使ってもいない人がメソッドチェーンの中断などというテクニカルな話題で
まともなアイデアを出せるわけないしw

451 :Name_Not_Found:2014/05/13(火) 23:29:13.00 ID:???.net
テクニカルwwww
皮肉かwww

452 :Name_Not_Found:2014/05/13(火) 23:29:17.57 ID:???.net
>>447
勘違いをしているようだが、関数型言語というのはオブジェクト指向よりも古い。そして不便。
その証拠に関数型を謳っている某ライブラリでも破壊的な非関数型メソッドがいくつも入っている。
ループ抜けるのにfalse返さないといけなかったら、関数型だとfalseしか返ってこないよねw

453 :Name_Not_Found:2014/05/13(火) 23:35:37.24 ID:???.net
>>442
メソッドチェーンを中断させるのなら、例外しか無いんじゃね?

var value = _(v).foo().bar().baz();

のfoo()で中断させる場合、例外を出さないなら
[なんかのオブジェクト].bar() は絶対実行されるから、
それでvalueにundefinedを入れるようにするとなると、

「なんかのオブジェクト」は、メソッドチェーンできるオブジェクトでありながら、
barやbazを何をやってもundefined相当のオブジェクトを返すメソッドに
すり替えないといけないわけで、出来ないことはない気もするけど
そうとう無駄なことやる羽目になりそう。

454 :Name_Not_Found:2014/05/13(火) 23:48:19.47 ID:???.net
>>442
> lodashではfalseを返せばループは終わらせられるようです
> メソッドチェーンを中断させる機構があれば尚いいのですが・・

中断の意味が二通りある。

一つは、処理が続行できなくなって中断する場合(戻り値なし)と、
もう一つは、これ以上処理する必要がないので処理を切り上げる場合(戻り値あり)

前者は例外を使う。

後者は、処理を切り上げることを意味する値を返す。
falseだったり、nullだったり、undefinedだったり、
この三つのどれかを処理を切り上げる値に使えばいいと思うけど、
無理なら例外を使ってもいいと思うし、特別なオブジェクトを返すとかもある。

asyncライブラリみたいに、引数にcallbackを渡してどう呼び出すかで
続きをやるかどうか判定するなんてのも考えられるよ。
http://qiita.com/takeharu/items/84ffbee23b8edcbb2e21

一般的な方法ってのは無いと思う。

455 :Name_Not_Found:2014/05/13(火) 23:48:57.26 ID:???.net
「関数言語的ループ」って再帰ループのことだと思ったんだが違ったのか?
メソッドチェーンの中断の話?どこで掏り替わったんだ?

456 :Name_Not_Found:2014/05/13(火) 23:52:33.05 ID:???.net
>>442の時点で二つの話がごっちゃになってるのです。

457 :Name_Not_Found:2014/05/13(火) 23:58:17.84 ID:???.net
>>452
勘違いしてないよw
時代的な並列処理の要請と、あとおそらく「伽藍とバザール」から、
古い関数型言語の見直しが何年か前にあって、
新しい関数型言語が生まれたり、関数型言語のパラダイムが既存の言語に流入してきた
この新しい流れのことを言ってるんだよ

458 :Name_Not_Found:2014/05/13(火) 23:59:48.44 ID:???.net
>>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 :Name_Not_Found:2014/05/14(水) 00:06:50.28 ID:???.net
>>458
少しはましになったけど、引数dが余計だね。
もし仮にIDEを使っていて、関数の仮引数を表示してくれるとしたら
気持ち悪いよね。ということで消してみて。

あと意味なく一文字変数にしない。
わかりにくいから。

460 :Name_Not_Found:2014/05/14(水) 00:07:09.19 ID:???.net
やはり例外しかないでしょうかね〜
うまく呼び出し部分をラップして特別なオブジェクトを返したら中断するとか出来そうな気もするのですが

461 :Name_Not_Found:2014/05/14(水) 00:10:11.77 ID:???.net
>>458
dが消えてから指摘しようと思ったけど、
面倒なので私的。

元々の質問者は、その例で
exec,judgmentの二つに分けたくない場合の
話をしてるんだよ。

462 :Name_Not_Found:2014/05/14(水) 00:12:51.84 ID:???.net
あと関数型なら、iというインデックスを使わずに
「残りの引数」って感じで渡す気もするんだけど、
まあそこはいいのかな。残りの引数を使う正当な理由が思いつかないし。

463 :Name_Not_Found:2014/05/14(水) 00:36:14.59 ID:???.net
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 :Name_Not_Found:2014/05/14(水) 00:40:48.12 ID:???.net
質問者がコードを出さないから具体案が出てきづらい事になる
初めからこうなることは明白だった

465 :Name_Not_Found:2014/05/14(水) 00:48:38.06 ID:???.net
>>342
document.write("<a href='"+article[n]+"'>");
これは、ファイル名だけ?
それなら、相対パスになる

var artDir = "http://www.〜.〜/"
記事が入っているフォルダのパスを、変数に入れておいて、
ファイル名と連結して、絶対パスで指定する


配列の宣言は、単に下のように書ける
var article = new Array();
var article = [];

466 :Name_Not_Found:2014/05/14(水) 00:59:55.16 ID:???.net
にわか関数型野郎はhaskellスレにでも行って打ちのめされてこい
そして二度と来るな

467 :Name_Not_Found:2014/05/14(水) 01:08:20.37 ID:???.net
>>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 :Name_Not_Found:2014/05/14(水) 01:11:35.48 ID:???.net
訂正

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 :Name_Not_Found:2014/05/14(水) 03:13:29.33 ID:???.net
即時関数をapplyで呼ぶというウルテクを見つけました

(function (a){
console.log(a);
}.apply(this,['x']));

これは普通に使っていい技でしょうか?

470 :Name_Not_Found:2014/05/14(水) 07:04:33.24 ID:???.net
存在しないdom要素のjqueryオブジェクトを生成した後、
そのdom要素を作成しても、
先に作ったjqueryオブジェクトを使って操作することは出来ません。
作成済みのjqueryオブジェクトに現在のdomの状況を反映させるにはどうしたらいいでしょうか?

471 :Name_Not_Found:2014/05/14(水) 09:58:14.14 ID:???.net
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/try...catch
ここに
catch (e if e instanceof EvalError)
のような書き方が載っていますが、
注: この機能は ECMAScript 仕様の一部ではありません。
と書いてあります。
このような形でキャッチするエラーを指定出来ない場合もあるということでしょうか?

472 :Name_Not_Found:2014/05/14(水) 10:16:15.13 ID:???.net
>>471
> 注: この機能は ECMAScript 仕様の一部ではありません。
実装依存という事です。
全ての実装で実装されている保証がありませんし、今後削除される可能性もあります。
対象ブラウザ全てで実装されていることを確かめる必要がありますし、今後更新される度に該当機能が削除されていないか確かめる必要があります。

473 :Name_Not_Found:2014/05/14(水) 10:29:20.29 ID:???.net
ありがとうございます
あまり使わない方が良さそうですね
欲しいエラーではない場合、再びthrowする
という判定処理を書くのがいいでしょうか?

474 :Name_Not_Found:2014/05/14(水) 17:30:40.15 ID:???.net
ontouchstartってスマホ用のイベントだとおもいますが、
これをPCで閲覧した時にも記述することってやっぱりよくないことですか?

475 :Name_Not_Found:2014/05/14(水) 20:47:22.25 ID:???.net
C++の int operator()() {...} みたいなメソッドは書けますか?
クラスインスタンスを関数のように使いたいのです。

function Foo() { .. }
var obj = new Foo();
obj(); /* 関数としてコールしたい */

ttp://ideone.com/zRugbf

476 :Name_Not_Found:2014/05/14(水) 21:19:28.41 ID:???.net
残念ながら出来ません

477 :Name_Not_Found:2014/05/14(水) 21:38:47.51 ID:???.net
>>475
こういうこと?

function Foo() {
function bar() {
console.log('a');
}
return bar;
}
var obj = new Foo();
obj(); // a

478 :Name_Not_Found:2014/05/14(水) 22:09:20.64 ID:???.net
>>477
クロージャーではなくprotptypeでなんとか出来ないのかと思いまして。

>>476
そうかぁ、出来ないのですね。

ありがとん。

479 :Name_Not_Found:2014/05/14(水) 22:09:44.46 ID:???.net
javascriptがflashに大勝利するにはどうすればいいと思いますか
ぼくはソースの暗号化が肝だと思うのですが

480 :Name_Not_Found:2014/05/14(水) 22:40:43.36 ID:???.net
意味不明
flashなんてもうオワコンじゃん

481 :Name_Not_Found:2014/05/14(水) 22:59:08.50 ID:???.net
>>474
PCかスマホかなんて忘れた方がいい。
あるのは画面の大きさぐらい。

タッチ装置がついててブラウザが対応していたら、
ontouchstartが使われる。そうでなければ使われない。
スマホかどうかは関係ない。

482 :Name_Not_Found:2014/05/14(水) 23:03:24.73 ID:???.net
>>479
ソースの暗号化なんて、誰もほしがってなんかいない。

483 :Name_Not_Found:2014/05/14(水) 23:33:36.97 ID:???.net
>>481
ありがとうございました!

484 :Name_Not_Found:2014/05/14(水) 23:44:31.78 ID:???.net
>>478
function f() {
console.log(this.a);
}
var o = {
a: 1
},
obj = f.bind(o);
obj(); // 1
o.a = 2;
obj(); // 2

bind使えばこう書けるが。

485 :Name_Not_Found:2014/05/15(木) 02:16:43.78 ID:???.net
>>470
jQueryの質問は下記へ

【jQuery】JavaScript ライブラリ総合質問所 vol.3
ttp://toro.2ch.net/test/read.cgi/hp/1369444026/l50

486 :Name_Not_Found:2014/05/15(木) 03:04:36.19 ID:???.net
>>473
try-catch のcatch節でthrowするという意味なら普通はあまりやりません。
標準の例外を吸収しておいて別の例外を発生させるのは特異なケースですが、背景が不明なのでそれが正しいのかは何ともいえません。

普通は標準の例外を見越して、例外が発生しないようにコーディングするので、try-catch は滅多に使いません。
もし、「例外の発生条件がよくわからないのでとりあえず、try-catchで括る」という考え方なら良くない手法だと思います。

487 :Name_Not_Found:2014/05/15(木) 03:30:15.84 ID:???.net
lodashで、変数でキー名を指定してオブジェクトに値を設定したい場合は
自分でプラグインを作成するしかないでしょうか?
assignの引数はオブジェクトにしか対応していないようです
jqueryのように
assign(key, value)
というような形でも指定できたら一番いいのですが

488 :Name_Not_Found:2014/05/15(木) 03:42:14.59 ID:???.net
>>485
なんでlodashについては何も言わないんだ

489 :Name_Not_Found:2014/05/15(木) 03:49:46.50 ID:???.net
そもそも、JSでメンバへの代入をメソッドで出来るべきでは?

{a:1}.set('b',2)

みたいな感じで

490 :Name_Not_Found:2014/05/15(木) 08:32:19.05 ID:???.net
jsでhtmlのエレメントを取得し、属性値を設定します。例えばidとか。
この時、自動的にnameにも同じ値が設定すされるようにする。

みたいな仕組みを作ることは可能でしょうか?

491 :Name_Not_Found:2014/05/15(木) 08:36:22.23 ID:???.net
チェックボックスにidと同じname属性を付けたいのだと思うが、

492 :Name_Not_Found:2014/05/15(木) 08:42:59.38 ID:???.net
しまった、途中でカキコしてしまったw

jQueryが使えるなら、

$('input[type=checkbox]).each(function(){$(this).arrt("name", this.id)});

でどうでしょうか?

493 :Name_Not_Found:2014/05/15(木) 10:09:28.92 ID:???.net
.arrt → .attrじゃないか
あと、idにattrしてかつnameにもattrしたい
ということだろうたぶん

494 :Name_Not_Found:2014/05/15(木) 10:14:28.98 ID:???.net
PCでスマホサイトの動作を確認したいんですが、
Useragentを書き換えるだけじゃなくて、スマホ特有のイベントontouch系を発生させるツールとかないですか?

495 :Name_Not_Found:2014/05/15(木) 10:49:09.58 ID:???.net
>>494
エミュレータを使えばいいのでは?
最終的には実機で確認する必要がありますが

496 :Name_Not_Found:2014/05/15(木) 11:36:03.67 ID:???.net
>>490
もう少し具体的に。

要素と文字列を受け取って、idとnameとに設定する関数を作る
っていうのでも仕組みって言えば仕組みだよね

jQueryで$('.foo').setIdAndName('foobar') みたいな感じでしたければ、
そういうプラグインを書けばいいし

497 :485:2014/05/15(木) 14:54:19.72 ID:???.net
>>488
あっちのスレは、jQueryだけじゃなかったのか
ライブラリ総合か
それなら、Lo-Dashの話もあっちで

次から、スレタイも変えないと
【jQuery】JavaScript ライブラリ総合質問所 vol.3【Lo-Dash】

498 :Name_Not_Found:2014/05/15(木) 14:56:14.61 ID:???.net
まあ>>488も分かってて言ってるんだろうけど

jQuery他をこっちで聞いてるのはライブラリスレを知らないだけ
lodashをこっちで聞いてるのは意図的な荒らしと自演レス

499 :Name_Not_Found:2014/05/15(木) 16:54:27.09 ID:???.net
>>497
そのタイトルだとあなたと同じようにjQuery, Lo-Dashスレと勘違いされるから、特定のライブラリ名はタイトルに含めるべきではないと思う

500 :Name_Not_Found:2014/05/15(木) 17:01:42.99 ID:h7oaYySD.net
でもJQueryも有名だしJQuery等でいいんじゃないか
どっちにしても向こうのスレで話し合えば良いと思うが

501 :Name_Not_Found:2014/05/15(木) 19:09:09.31 ID:???.net
>>494
chromeのDeveloper toolでできる

502 :490:2014/05/15(木) 19:24:33.83 ID:???.net
>>491-493>>496
現状jQuery使ってないので、新たな技術要素を増やすのは、できれば避けたいです。絶対ではないけど。

やりたいことは、例えばreadonlyとdisabledはについて、いずれか一方がtrueならもう一方は必ずfalseにしたいという具合に、排他的に設定するルールだとします。

この時、
xxx.readOnly=true;
xxx.disabled=false;

と書くのではなく

xxx.readOnly=true;

とだけ書けば、disabledも勝手にfalseになってくれる。そんな仕組みを作りたい。

C#なんかでいうと、プロパティの中にロジックを書くような事が出来れば良いのかなと思ってます。
jsにはprototypeとかあるので、その辺うまく使えば出来たりするんかなーと。

503 :Name_Not_Found:2014/05/15(木) 19:43:35.94 ID:???.net
荒らしじゃねーよカス
ライブラリスレでjsの話をするのはおかしいが
jsスレでライブラリの話するのは何もおかしくない
うざい自治厨がスレを分けただけの話
つまりどっちに書いてもいい

504 :Name_Not_Found:2014/05/15(木) 20:21:40.74 ID:???.net
>>502
Object.defineProperty でプロパティの変更をハンドリングするといいんじゃない?

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

505 :Name_Not_Found:2014/05/15(木) 20:41:19.91 ID:???.net
>>501
できました!
さすがグーグル神!

506 :Name_Not_Found:2014/05/15(木) 22:28:24.19 ID:???.net
lodashの関数型プログラミングに慣れるとスコープが無駄に広い変数にイライラするね
どこで使われているか一目で分からない変数とかあり得ないだろ

507 :Name_Not_Found:2014/05/15(木) 23:02:16.75 ID:???.net
>>502
ウェブ製作者必須の技術でjQueryを作ると、
簡単にできるということを知っておいて。

簡単に早く不具合がなく品質の高いものを作ろうとするのなら、
技術を身につけるべきだということを知っておいて。

自分独自の面倒な仕組みを作りたいというなら、その理由がマイナス、
つまり勉強したくない、自分の知ってることだけでやりたいだったら、
なにも成長しないということを理解しておいて。

その上でやりたいのならどうぞ。


じゃあjQueryだったら簡単にできるというコード。

var state1 = {readonly: true, disabled: false};
var state2 = {readonly: false, disabled: true};

$('.test').prop(stete1); // classがtestの項目 "全て" をstate1に変更

508 :Name_Not_Found:2014/05/15(木) 23:05:10.78 ID:???.net
視野が狭い奴ってレベルの低い話をドヤ顔で語っちゃうんだよねw

509 :Name_Not_Found:2014/05/15(木) 23:08:47.34 ID:???.net
※ いま>>508がドヤ顔しています

510 :Name_Not_Found:2014/05/15(木) 23:27:22.19 ID:???.net
この場合、質問者が求めているのは>>504みたいなのであって、
>>507は質問に対して的外れ過ぎだろ

511 :Name_Not_Found:2014/05/15(木) 23:29:07.31 ID:???.net
無能なやつほど偉そうにしたがるんだよな

512 :Name_Not_Found:2014/05/15(木) 23:32:30.20 ID:???.net
>>511
お前偉そうだな

513 :Name_Not_Found:2014/05/15(木) 23:33:52.29 ID:???.net
「プログラマーに向いてない」とか「成長しない」とか「スレ違い」とか言う奴はだいたいクズ

514 :Name_Not_Found:2014/05/15(木) 23:49:56.85 ID:???.net
>>513
お前は、言う奴じゃなくて、言われる奴だから
大丈夫だねw

515 :Name_Not_Found:2014/05/16(金) 01:33:03.32 ID:???.net
無能なやつが他人に偉そうにしたいと思ったら規則を作り出す
規則への従順さを議題にする限り、能力が問われることはないから。
自民党がやろうとしているのも根源的にはそういうこと。
現在日本で進行しているのは、まさに無能者によるテロリズムだ。

516 :Name_Not_Found:2014/05/16(金) 01:42:54.20 ID:???.net
この手のネット特有の現実批判しかできない奴って、考えるのが技術であることを知らないんだろうな
みんな借り物の言葉だもんな

517 :Name_Not_Found:2014/05/16(金) 01:51:37.19 ID:???.net
外部ライブラリを導入したくない理由なんかいくらでもあるだろうに・・・
自分の中だけで勝手に妄想膨らませて語っちゃう奴っているよなw

518 :Name_Not_Found:2014/05/16(金) 02:02:39.69 ID:???.net
借り物の言葉で自分に酔えるというのは、ある意味才能だと思うよ

519 :Name_Not_Found:2014/05/16(金) 02:21:16.32 ID:???.net
>>516
それは単にお前がいつも言われてることだろw
こんなことを言っている書き込みがあったら持って来いよ
カスが

520 :Name_Not_Found:2014/05/16(金) 02:24:08.46 ID:???.net
アホは批判すらマトモに出来ないから、
かつて自分が言われた批判を間違ったタイミングで取り出してくるよな
お前が言われた言葉はお前にぴったりなんだから
自動追尾でお前にぶつかって行くに決まってんだろ
カスが

521 :Name_Not_Found:2014/05/16(金) 02:28:41.83 ID:???.net
よほど図星だったみたいで、一回レスしただけじゃ気持ちがおさまらなかったんですねw

522 :Name_Not_Found:2014/05/16(金) 02:30:17.51 ID:???.net
単に教えてあげただけだよ
もともと怒ってもないし

523 :Name_Not_Found:2014/05/16(金) 02:36:48.03 ID:???.net
私も教えてあげますが、怒ってない人はカスがカスがなんて繰り返さないものですよw
それは沸点の低い証拠です

524 :Name_Not_Found:2014/05/16(金) 02:40:39.79 ID:???.net
そうですか
ありがとうございました

525 :Name_Not_Found:2014/05/16(金) 02:48:17.86 ID:???.net
自分の気持ちをコントロールできるようになれば、少しは冷静に自分の頭でものを考えられるようになると思いますよ

526 :Name_Not_Found:2014/05/16(金) 03:00:18.19 ID:???.net
考えすぎかもしれんが、>>507の回答見る限り、
成長できないのはこいつ自身な気がしてきた。

527 :Name_Not_Found:2014/05/16(金) 03:09:53.57 ID:???.net
>>526
なんでそんなどうでもいいレスしたいの?
したくなったの?

528 :Name_Not_Found:2014/05/16(金) 04:02:30.50 ID:???.net
別に考えすぎじゃないだろw

529 :Name_Not_Found:2014/05/16(金) 04:06:01.64 ID:???.net
>>502

こんな感じかね? http://ideone.com/lOV8Pa

530 :Name_Not_Found:2014/05/16(金) 06:08:06.94 ID:???.net
catchブロックのeを宣言せずに使えるのは何故ですか?

531 :490:2014/05/16(金) 09:22:22.30 ID:???.net
>>504>>529
おっ、これは面白い。これは知らなかったです。
ecmascriptの仕様なら標準技術といえるし、
サポート対象環境で動きそうなら、検討させていただきます。
ありがとうございました。

>>507
jQueryを使うという選択をしたならば、そういうやり方もありですね。

532 :Name_Not_Found:2014/05/16(金) 17:35:37.41 ID:???.net
桁が大きすぎて3.5345345345346564e+23みたいな値同士を比較しても正しい結果になりません
これはしょうがないことですか?
あとこういうe+23みたいなのがくっついてしまったかどうかを判定する方法はありませんか?

533 :Name_Not_Found:2014/05/16(金) 17:51:15.52 ID:???.net
>>532
最大どこまで扱うのかしら無いけど、JavaScriptネイティブで
扱える範囲を超えているからどうしようもの無い。
何かしらのライブラリを使うしか無いね。BigIntとかのキーワードで検索できる。

このスレにはライブラリの話をするとうるさい奴がいるから注意してね。
スレ違いではないから問題ない。軽く無視しよう。

534 :Name_Not_Found:2014/05/16(金) 18:26:58.59 ID:???.net
parseFloatを通して比較すればどうかな?

if (parseFloat(a) > parseFloat(b)) { ... }

指数表記が有るかは、if (a.search(/e/)>0) {...} で判定。

正攻法はBigIntだろうね。

535 :Name_Not_Found:2014/05/16(金) 19:43:04.45 ID:???.net
>>532
ES6 だけど Number.MAX_SAFE_INTEGER と比較すれば安全な整数値か判定できる
静的プロパティだから、なければ作ればいい
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer

536 :Name_Not_Found:2014/05/16(金) 20:07:40.20 ID:???.net
es6なんて使えないんだから意味なくね
自分一人で動かすプログラムならともかく

537 :Name_Not_Found:2014/05/16(金) 20:12:38.50 ID:???.net
>>536
だから「なければ作ればいい」といっているのだが

538 :Name_Not_Found:2014/05/16(金) 20:15:25.81 ID:???.net
じゃES6の話なんてすんなよ

539 :Name_Not_Found:2014/05/16(金) 20:19:33.78 ID:???.net
知ってれば将来の互換性を確保出来る

540 :Name_Not_Found:2014/05/16(金) 20:19:57.21 ID:???.net
>>538
Number.MAX_SAFE_INTEGER は Google Chrome, Firefox で使える
ES6 が使えないわけじゃない

541 :Name_Not_Found:2014/05/16(金) 20:21:09.20 ID:???.net
>>5のtableを見れば、使えるか使えないかぐらいわかっただろうに
http://kangax.github.io/compat-table/es6/

542 :Name_Not_Found:2014/05/16(金) 20:50:00.02 ID:???.net
>>532
よくみたら有限数の限界を超えていたので訂正
Number.MAX_VALUE と比較してやればいい
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_value

ただ、そもそも不動点少数演算になっている時点で誤差が生じるのだが、軽微な誤差は問題ないのだろうか…

543 :Name_Not_Found:2014/05/16(金) 20:52:27.69 ID:???.net
おちつけ

544 :Name_Not_Found:2014/05/16(金) 21:19:30.52 ID:???.net
始めのBigIntでミスリードしたことを踏まえると、全員間違ってたんだな…

545 :Name_Not_Found:2014/05/16(金) 22:03:31.61 ID:???.net
lodashで何とかできるんじゃね?

546 :Name_Not_Found:2014/05/16(金) 22:08:18.71 ID:???.net
>>545
具体的なコードを教えてください

547 :Name_Not_Found:2014/05/16(金) 22:10:08.23 ID:???.net
ふと思ったのですが、Int64 を標準化した仕様はないのでしょうか?
探してみたのですが、探し方が悪いのか該当仕様が見つかりませんでした

548 :Name_Not_Found:2014/05/16(金) 22:18:19.23 ID:???.net
>>503
まあ、その質問が増えてきたなら、啓蒙ができたって事で専用スレでやっていいな
ま、ライブラリ専用もあるし

549 :Name_Not_Found:2014/05/16(金) 22:23:07.07 ID:???.net
int64を扱うライブラリがあったような記憶が

550 :Name_Not_Found:2014/05/16(金) 22:25:41.81 ID:???.net
32ビットでじゅうぶんですよ。
32ビットでじゅうぶんですよ。
分かってくださいよ!

551 :Name_Not_Found:2014/05/16(金) 22:34:42.83 ID:6hsl02bR.net
xmlHttpReques2でクロスオリジン通信できるようになったけど
結局サーバー側のheaderで許可しないといけないならどういう時に使うんだろう
誰かが公開してるAPI扱う時くらい?

552 :Name_Not_Found:2014/05/16(金) 22:45:13.52 ID:???.net
var i = 5;
for (var j = 0; j < i / 3; ++j) { console.log(j); }
=> 0
=> 1
JavaScirptは糞でした
ありがとうございました

553 :Name_Not_Found:2014/05/16(金) 22:46:28.47 ID:???.net
>>551
自分が管理する他ドメインとの通信とか
そもそも、あれは他ドメインサーバのデータを無許可に取得できるようにする為の仕組みじゃない

554 :Name_Not_Found:2014/05/16(金) 23:15:04.85 ID:???.net
>>552


555 :547:2014/05/16(金) 23:35:03.73 ID:9YSJ/oxP.net
>>549
ライブラリではなく、標準化された仕様はないのでしょうか
なければ、せめて各ブラウザで独自実装した仕様があれば...

556 :Name_Not_Found:2014/05/16(金) 23:50:02.72 ID:???.net
lodashの話題をTwitterのあごちゃんがよく呟いてたけど。。。まさかね

557 :Name_Not_Found:2014/05/16(金) 23:50:50.42 ID:???.net
そろそろ多倍長整数にも対応してもいい時代なんじゃないの

558 :Name_Not_Found:2014/05/16(金) 23:52:48.51 ID:???.net
誰やねんw
関数言語的に書き直していくと、今までのコードのアラが見えてきて
くそコードを書いていた自分に凹んできますが、俺だけでしょうか?

559 :Name_Not_Found:2014/05/17(土) 00:12:50.62 ID:???.net
>>554
C言語系(C,C++,Javaなど)は0しか出力されない
知らずにいると痛い目にあう

560 :Name_Not_Found:2014/05/17(土) 00:13:49.57 ID:???.net
>>558
俺は、prototype.jsが無い時代に、lodashでいうeachなどのようなものを
当時関数型言語の知識もなかったが、自作していた。
ループが一行で書けるという程度のメリットしか当時は理解していなかったけど。

このように、昔自力でやっていたことが、後から
世間一般ではこういう風に言われているんだと知ることが多い。

たとえば、ネットもパソコン通信もない小学生時代。記憶媒体=紙に
BASICのコードを書いている時、コードが複雑になるからという理由で
FORとNEXTの対応をインデントをして線でつなぎ、GOTOでその中には
飛ばないようするという俺ルールを考えだしていた。

勉強することは大事で時間の節約になると思う反面。
自力で考えだしてる自分は、プログラミングと相性が良いなって思うw

561 :Name_Not_Found:2014/05/17(土) 00:29:13.30 ID:???.net
>>559
純粋な興味本位で聞くのだけど、どういうロジックで 0 が出力されるの?

562 :Name_Not_Found:2014/05/17(土) 00:29:58.99 ID:???.net
>>551
そもそも今までオリジン制約があったのはセキュリティーの観点からで、
サーバー側もクロスオリジンリクエストはできない前提でセキュリティー対策を考えてた

それがたとえば突然、新規格ではクロスオリジンリクエストできますってなったら当然困るわけで、
サーバー側が対応しないと使えないような今の仕様にするのは当然

563 :Name_Not_Found:2014/05/17(土) 00:31:04.83 ID:???.net
>>561
C言語だと整数型同士の演算結果は整数になる

564 :Name_Not_Found:2014/05/17(土) 00:31:58.55 ID:???.net
別にこれに関してはjavascriptが糞だとは思わないけどな
ただの仕様の違いであって

565 :Name_Not_Found:2014/05/17(土) 00:37:07.55 ID:???.net
>>563
レスありがとう
つまり、5/3 === 1 になるわけね

566 :Name_Not_Found:2014/05/17(土) 00:38:27.48 ID:???.net
for (い;ろ;は) { に }

javascript い→ろ→に→は→ろ→に→は→ろ...
その他 いろは→に→ろ→は→に→ろ...

ということでしょうか

567 :Name_Not_Found:2014/05/17(土) 00:39:30.44 ID:???.net
>>564
俺もそう思う
これは突き詰めると「変数に型がないのがNG」と主張しているのと同じ

568 :Name_Not_Found:2014/05/17(土) 00:39:44.48 ID:???.net
>>566
あー、うん、それでいいよ。
あと10年勉強しな。

569 :566:2014/05/17(土) 00:40:24.94 ID:???.net
すみません
>整数型同士の演算結果
ということでしたか
把握しました

570 :Name_Not_Found:2014/05/17(土) 00:41:53.87 ID:???.net
その変な演算が問題になることなんてないだろ
重箱つつきすぎ

571 :Name_Not_Found:2014/05/17(土) 00:42:08.47 ID:???.net
5/3 === 1 ?
は?クソじゃん

572 :Name_Not_Found:2014/05/17(土) 00:43:22.57 ID:???.net
console.log(5/3===1)

普通にfalseですが?
なめてんのか?

573 :Name_Not_Found:2014/05/17(土) 00:46:00.84 ID:???.net
え? お前ら馬鹿なの?

5 / 3 = 1.666666666666667 なんだから、
j が 1.666666666666667 未満までのループで
0 と 1 しか表示されないの当たり前じゃん。

整数になるとか関係ねーしw

574 :Name_Not_Found:2014/05/17(土) 00:47:05.66 ID:???.net
> 5/3 === 1 ?
> は?クソじゃん

はC言語のこと。

575 :Name_Not_Found:2014/05/17(土) 00:47:18.77 ID:???.net
意味分からん
0と1とかざっくりしすぎだろ
原始的言語と一緒にすんな

576 :Name_Not_Found:2014/05/17(土) 00:48:53.15 ID:???.net
そもそも現代の言語で5/3が0になるモンなんてないだろ
何でそんなこと言いだしたんだよ
このやろうばかやろう

577 :Name_Not_Found:2014/05/17(土) 00:51:15.34 ID:???.net
>>576
あなたに呪いをかけた

> このやろうばかやろう
という、言葉を聞くと、

この夜老婆か犯ろう

という漢字に脳内変換してしまう呪いを。

578 :Name_Not_Found:2014/05/17(土) 00:53:28.06 ID:???.net
>>565
> 5/3===1
false

579 :Name_Not_Found:2014/05/17(土) 00:55:52.57 ID:???.net
5/3=1ってc言語っていうかアセンブラの演算だろw

580 :Name_Not_Found:2014/05/17(土) 00:57:07.10 ID:???.net
>>552
言ってる意味がわからん
j<1なら0だけ出力されるが
j<1.1なら0と1が出力されて当然だよね

581 :Name_Not_Found:2014/05/17(土) 00:57:10.56 ID:???.net
ようするに原始人がJSにも原始性を要求して
それがなかったからディスっただけだろ
そんな原始性はない方がいいんだからむしろ褒め言葉です

582 :Name_Not_Found:2014/05/17(土) 00:58:54.10 ID:???.net
5/3が1になるほうが糞じゃね?
仕様って言ってしまえばそうだけど

583 :Name_Not_Found:2014/05/17(土) 01:09:46.39 ID:???.net
int型なんだから当たり前じゃん
勝手にfloatに変換されても困る

584 :Name_Not_Found:2014/05/17(土) 01:20:47.86 ID:???.net
jsにint型なんてねーから

585 :Name_Not_Found:2014/05/17(土) 01:28:09.23 ID:???.net
だから整数が無いのは糞仕様と言うこと

586 :Name_Not_Found:2014/05/17(土) 01:30:24.72 ID:???.net
そんなのスクリプト言語なら普通だからw
原始人乙

587 :Name_Not_Found:2014/05/17(土) 01:31:09.70 ID:???.net
型が無いPythonですら5/3=1だ

588 :Name_Not_Found:2014/05/17(土) 01:32:29.36 ID:???.net
>>584
> 5/3
1.6666666666666667

589 :Name_Not_Found:2014/05/17(土) 01:32:39.97 ID:???.net
このスレにはJavaScriptしか知らない奴だけだってのはわかった

590 :Name_Not_Found:2014/05/17(土) 01:33:13.66 ID:???.net
>>587
パイソンくそすぎワロタ

591 :Name_Not_Found:2014/05/17(土) 01:34:30.33 ID:???.net
>>587
python2では・・ってかけよ

592 :Name_Not_Found:2014/05/17(土) 01:35:38.92 ID:???.net
>>590
ちなみにJavaScript以外に整数が無い言語を知らない
あったら教えてくれ

593 :Name_Not_Found:2014/05/17(土) 01:39:29.93 ID:???.net
>>591
確かにpython3だと実数になった
5//3が整数か
随分無謀な仕様変更したもんだ

594 :Name_Not_Found:2014/05/17(土) 01:43:05.26 ID:???.net
http://writecodeonline.com/php/

echo 5/3;
→1.6666666666667

当たり前だわな
整数が欲しいなら結果を整数にしろって話

595 :Name_Not_Found:2014/05/17(土) 01:43:46.54 ID:???.net
>>593
哀れww
パイソン3が無謀なんじゃない
お前がアホなだけや

596 :Name_Not_Found:2014/05/17(土) 01:45:03.68 ID:???.net
5 / 3は現実的に考えて小数になる
整数が欲しければ計算後に整数に変換すれば?
5/3が勝手に整数にされて切り捨てなのか切り上げなのか四捨五入なのかマイナスではどうなのか仕様全部把握しとかないと使えない糞仕様

597 :Name_Not_Found:2014/05/17(土) 01:46:29.90 ID:???.net
把握せずに作り始めるのかよ

598 :Name_Not_Found:2014/05/17(土) 01:58:45.66 ID:???.net
>>596
> 5 / 3は現実的に考えて小数になる
なんねーよw
5.0/3.0 → 1.666666…
5/3 → 1 余り 2 だろ (余りは同時に取得出来ないから 5 % 3 で計算する)
算数もできねーのかよ

599 :565:2014/05/17(土) 01:59:29.93 ID:???.net
まさか、こんなに荒れるとは...
言葉足らずでごめん

C言語では「5/3 === 1」になり、JavaScriptでは「5/3 -> 1.6666666666666667」になる
言語仕様の違いがあるだけで、どちらがいいというものでもないかと

600 :Name_Not_Found:2014/05/17(土) 02:06:05.64 ID:???.net
こんなの荒れるというほどではないな

601 :Name_Not_Found:2014/05/17(土) 02:12:00.93 ID:???.net
どう見ても責任>>552にあるだろw
なんで謝るんや

602 :Name_Not_Found:2014/05/17(土) 02:13:25.81 ID:???.net
var i = 5;
for (var j = 0; j < (i / 3|0); ++j) { console.log(j); }

ようするに整数を想定している所は |0 を念入りに仕込む必要がある

console.log((Math.random() * 100000) % 5); => 4.623614703014027

みたいにMath.random()も知らないでいるとハマる可能性がある

603 :Name_Not_Found:2014/05/17(土) 02:16:08.66 ID:???.net
Math.random() じゃなかった % の方だった
しかし % が実数の余りを返すってのは正直便利でもある

604 :Name_Not_Found:2014/05/17(土) 03:58:42.26 ID:???.net
>>598
循環小数って知ってる?
小学校じゃ習わないか
ごめんね

605 :Name_Not_Found:2014/05/17(土) 04:05:10.88 ID:???.net
>>604
有理数か分数って言え
自然数⊂整数⊂有理数(分数)⊂無理数⊂実数⊂複素数


606 :Name_Not_Found:2014/05/17(土) 04:25:07.17 ID:???.net
なんでお前ら下らないことで言い争いしてるの
両方ともよそでやれよ

607 :Name_Not_Found:2014/05/17(土) 07:07:47.86 ID:???.net
関数言語的なプログラミングをすると、
一つの処理の中で二種類以上のものを作ることに違和感を感じます
reduceが一つのものしか返さないように出来ているということもありますが、
単純に、美しくない、関数言語のパラダイムとそぐわない、と感じます
こういう場合どうするのがいいのでしょうか
関数言語におけるデザインパターン的なものとか、出てるんでしょうか

608 :Name_Not_Found:2014/05/17(土) 11:18:18.91 ID:???.net
>>607
ECNMAScriptは関数言語じゃない

609 :Name_Not_Found:2014/05/17(土) 13:12:02.10 ID:???.net
>>608
それがどうかしたの?

610 :Name_Not_Found:2014/05/17(土) 13:15:41.16 ID:???.net
>>609
関数言語でないのに関数言語的アプローチを目指すことが間違い

611 :Name_Not_Found:2014/05/17(土) 13:39:53.06 ID:???.net
JavaScriptは関数型でもオブジェクト指向型でもありません
無理やり関数型やオブジェクト指向っぽく書こうとするのはやめましょう

612 :Name_Not_Found:2014/05/17(土) 14:58:00.07 ID:???.net
>>610
その言語の特徴を活かしたアプローチをスレばいいんじゃないの?

つまり、関数型とオブジェクト指向の両方を
バランスよく取り入れた言語なんだから、
関数型とオブジェクト指向の両方のアプローチを
バランスよく行えばいい。

どちらにしろ何らかのアプローチをしないといけないんだしさ。

613 :Name_Not_Found:2014/05/17(土) 15:23:15.27 ID:???.net
>>612
関数型言語的性質がないから>>607のような問題が起きているのだと思うのだけど
それでも異論があるなら、関数言語的アプローチとしてあなたが具体案を提案すべきでは?

614 :Name_Not_Found:2014/05/17(土) 15:33:32.08 ID:???.net
>>607の問題ってなんですか?
一つの処理で二種類以上のものを作ることでしょうか?
関数型言語では、そんなことしないですよ?

JavaScriptは関数型言語の思想が混じっているので、
関数言語的アプローチでいうからこそ、
>>607の問題はできないのです。関数型言語だから。

615 :Name_Not_Found:2014/05/17(土) 16:07:09.62 ID:???.net
>>614
横からだけど、ちゃんと質問に沿った回答を心がけた方がいいよ
>>612とニュアンスが微妙に変化してるし、その突っ込みは本当に必要だったの?
初めから>>614の回答だけなら何も言わないけどさ

616 :Name_Not_Found:2014/05/17(土) 16:12:16.73 ID:???.net
>>614
> 一つの処理で二種類以上のものを作ることでしょうか?
詳しくは知らんのだが、関数型言語はリストで返り値を持てたような
俺の記憶違いかな?
詳しい人の説明を求む

617 :Name_Not_Found:2014/05/17(土) 16:16:20.19 ID:???.net
それならJavaScriptも配列を返せばいいじゃない。

618 :Name_Not_Found:2014/05/17(土) 16:20:18.38 ID:???.net
https://developer.mozilla.org/ja/docs/Web/JavaScript/New_in_JavaScript/1.7
分割代入 (destructuring assignment) は、配列やオブジェクトの

リテラルの構造とそっくりの構文を使って、配列やオブジェクトからデータを抽出することを可能にします。

複数の値を返す

分割代入のおかげで、関数は複数の値を返すことができます。関数から配列を返すこと自体はいつでもできたものの、分割代入はさらなる柔軟性を提供します。

function f() {
return [1, 2];
}
見ての通り、すべての返り値を角カッコで囲んだ、配列に似た構文を使ってその結果を返します。
この方法で任意の数の返り値を返すことができます。この例では、f() はその出力として [1, 2] を返します。

var a, b;
[a, b] = f();
document.write ("A is " + a + " B is " + b + "<br>\n");

619 :Name_Not_Found:2014/05/17(土) 16:29:12.65 ID:vKHtBQrX.net
フレーム内のコンテンツを印刷にあたり
frames[frameName].print();
というコードを書いています。
これでうまくいっていますが、IE10においては
window.print(); したときと同様、全画面が印刷されてしまいます。

フレームへのアクセス方法が他にあるんでしょうか?

620 :619:2014/05/17(土) 16:31:10.22 ID:vKHtBQrX.net
フレームと書いた部分は、正確には iframe です

621 :Name_Not_Found:2014/05/17(土) 16:35:57.88 ID:???.net
>>618
素朴な疑問だが

> 配列に似た構文を使ってその結果を返します
とあるが、 配列そのものを返しているようにも見えるが

「配列に似た構文」とは関数の中の return ではなく
代入の左辺を指すのではないのか?

var a = f();
var [b, c] = f();

があるとき a は配列になるのでは?

function f() {
return new Array(1, 2);
}
だったら?

622 :619:2014/05/17(土) 16:56:27.58 ID:vKHtBQrX.net
スミマセン、うまくいきました。IEでは次のように先にfocusする必要があるようです。
frames[frameName].focus();
frames[frameName].print();

印刷データのキャッシュなどの関係でうまくいってる可能性もあるので、
尚、確認してみますですm(_ _)m

623 :Name_Not_Found:2014/05/17(土) 16:58:54.76 ID:???.net
>>621
> 「配列に似た構文」とは関数の中の return ではなく
> 代入の左辺を指すのではないのか?
「配列に似た構文を使って」だから文章的には矛盾はないと思うけど...
あなたの理解で合ってる

624 :Name_Not_Found:2014/05/18(日) 00:37:55.93 ID:???.net
指定した関数を何回呼ばれたか分かるようにするライブラリみたいのありますか?

625 :Name_Not_Found:2014/05/18(日) 05:38:04.24 ID:???.net
JavaScriptプロファイラ で検索

626 :Name_Not_Found:2014/05/18(日) 06:04:04.78 ID:???.net
>>624

http://ideone.com/HVfnDI

function foo() { } /* カウントしたい関数 */


var count_hash = {};

function callcounter(func) {
 count_hash[func.name] = 0;
 return function() {
  count_hash[func.name] += 1;
  return func.apply(this, arguments);
 };
}

foo = callcounter(foo); /* fooをクロージャと差し替え */

for (var i = 0; i < 100; i++) {
 foo();
}

console.log(count_hash.foo); // 100

627 :Name_Not_Found:2014/05/18(日) 06:21:32.09 ID:???.net
>>626
指摘するとしたらこんなところかな。
・関数名がかぶると困る
・count_hash がグローバル変数なのでよくない
・+=1よりも++の方が一般的で短いので推奨

で上記の指摘点を考慮しつつ、こんな感じのインターフェースにするといいかもね。

counter = call_counter(foo); // fooをクロージャと差し替えてカウンターオブジェクト生成
foo()呼び出し省略
console.log(counter.count);

もしくは

before_hook(foo, function() { count++; }); // 関数呼び出し前にフックを仕込む
foo()呼び出し省略
console.log(count);

628 :Name_Not_Found:2014/05/18(日) 06:34:13.58 ID:???.net
>>627
・counter がグローバル変数なのでよくない

629 :Name_Not_Found:2014/05/18(日) 06:43:33.04 ID:???.net
>>628
counterはローカル変数ねw

630 :Name_Not_Found:2014/05/18(日) 06:51:07.18 ID:???.net
>>629
var ついてないけど、ローカル変数?
(多分、>>626も同じ事を思ってるよ)

631 :Name_Not_Found:2014/05/18(日) 06:58:53.61 ID:???.net
>>630
たんなるつけ忘れってことw

632 :Name_Not_Found:2014/05/18(日) 07:01:05.58 ID:???.net
>>627
このインターフェイスでどうやってfooを置き換えられると?

633 :Name_Not_Found:2014/05/18(日) 07:04:00.87 ID:???.net
寝てないからなぁw

メソッドが属するオブジェクトも
引数に入れてやってください。

634 :Name_Not_Found:2014/05/18(日) 09:02:34.26 ID:???.net
俺ならこうする
カウントしたい関数=test();
function test(){}

xxxx=0;//global
function test(){console.log(xxxx++)}

これじゃイカンのか?態々getterみたいなことせんでも

635 :Name_Not_Found:2014/05/18(日) 09:34:29.72 ID:???.net
指定した関数名じゃなく指定した関数のカウント回数
>>634 指定すらしてない

636 :Name_Not_Found:2014/05/18(日) 11:17:10.55 ID:???.net
countTest = 0;
function test(){
countTest++;
console.log("test");
}
test();
test();
console.log(countTest + "回呼ばれました");

637 :Name_Not_Found:2014/05/18(日) 11:44:08.83 ID:???.net
だめだ わかってないなぁ

638 :Name_Not_Found:2014/05/18(日) 12:20:03.06 ID:???.net
×わかってない
◎質問者の説明不足

639 :Name_Not_Found:2014/05/18(日) 12:24:22.13 ID:???.net
http://jsbin.com/yufumaqe/1/edit

ありがとうございます
高階関数?を使ってこんな感じで出来ました
lodash最高ですね

_.mixin({
countable: function(fn){
var wrapper = function wrapper(){
var result = fn.apply(this,arguments);
wrapper.counter++;
return result;
};
wrapper.counter = 0;
wrapper.getCounter = function() {
return wrapper.counter;
};
return wrapper;
}
});

function test(s){
console.log(s);
}

var countableTest = _.countable(test);

countableTest('hoge');
countableTest('hoge');
countableTest('hoge');
console.log(countableTest.getCounter());

640 :Name_Not_Found:2014/05/18(日) 12:30:20.96 ID:???.net
これはどうですか

function a() { return true; }
function b() { return true; }

function _(fn_name) {
var fn = window[fn_name];
window[fn_name] = function() { window[fn_name].count++; return fn(); };
window[fn_name].count = 0;
}
_('a');
_('b');

a(); console.log(a.count);//1
a(); console.log(a.count);//2
b(); console.log(b.count);//1
b(); console.log(b.count);//2

641 :Name_Not_Found:2014/05/18(日) 12:44:21.60 ID:???.net
>>639
誰もlodashに触れてないのにどこから出てきたんです?

642 :Name_Not_Found:2014/05/18(日) 12:49:05.21 ID:???.net
最初から触れるとレス貰えなくなるから学習したんでしょ

643 :Name_Not_Found:2014/05/18(日) 12:52:08.25 ID:???.net
>>640
ありがとうございます
fn.nameにしてこちらを採用させていただきます

644 :Name_Not_Found:2014/05/18(日) 13:40:48.95 ID:???.net
>>640
これグローバルに無い関数は計測出来ないじゃん0点
プロファイラで計測する以外に方法はない

645 :Name_Not_Found:2014/05/18(日) 14:07:02.22 ID:???.net
>>641
高階関数とlodashの親和性は高いので。
もちろんlodash使わなくても出来ますよd(^_^o)

646 :Name_Not_Found:2014/05/18(日) 17:39:50.71 ID:???.net
結局、>>626と同じじゃねーかw なんでこんなに手間増やしてベンチ激遅にしなきゃらんのだw アホ過ぎる

647 :Name_Not_Found:2014/05/18(日) 17:47:08.38 ID:???.net
今の時代はベンチ速度よりも、
メンテンス性の方が重要視されるからだよ。

648 :Name_Not_Found:2014/05/18(日) 17:51:04.24 ID:???.net
何をとるかは目的によるのであって、時代は関係ないねw

649 :Name_Not_Found:2014/05/18(日) 18:31:36.12 ID:???.net
いや関係有るよ。正確に言えばパソコンの性能だが。
ほんの15年前まで、速度が必要な所にJavaScriptを
使うこと自体ありえない話だった。

速度が気になる? じゃあJavaScriptなんかやめろよ。
これが常識だった。

650 :Name_Not_Found:2014/05/18(日) 18:34:44.83 ID:???.net
JavaScriptのリクエスト数の方が問題になるからねぇ。

目的がリアルタイムゲーム以外なら、
JavaScriptの実行速度を考慮する必要はない
という結論でいいんじゃないか。

651 :Name_Not_Found:2014/05/18(日) 18:40:50.68 ID:???.net
>>649
お前、趣味でやってるのかよwww

652 :Name_Not_Found:2014/05/18(日) 18:42:48.28 ID:???.net
趣味でやってる人は、0.0001秒にまで
こだわったりするからなw

653 :Name_Not_Found:2014/05/18(日) 19:02:02.26 ID:???.net
ベンチ取ってみたんだけど何これ?おかしくね?何故rowが糞遅いのか?firefoxだと、何故row2が一番速いのか?
http://jsperf.com/row-vs-lodash

654 :Name_Not_Found:2014/05/18(日) 19:06:59.39 ID:???.net
おかしいのはベンチの取り方

655 :Name_Not_Found:2014/05/18(日) 19:10:59.43 ID:???.net
100万回のループで10秒も時間が違ったのだ!
1秒の方が10倍も速いんだぞ!
10倍もの差は無視できない!


でもそれ1回あたり0.00001秒ですよね?

656 :Name_Not_Found:2014/05/18(日) 19:32:02.99 ID:???.net
なるほど。ベンチの取り方かえたら、おかしくなくなったわ

657 :Name_Not_Found:2014/05/18(日) 19:34:58.21 ID:???.net
2<<1と2*1って速度変わりますか?

658 :Name_Not_Found:2014/05/18(日) 20:08:56.87 ID:???.net
処理系の実装によるだろうね。
このケースなら構文解析で定数に置換されるだろうから、
速度は同じになるんじゃないかな。

659 :Name_Not_Found:2014/05/18(日) 20:19:00.95 ID:???.net
俺がそうだったので速度厨の気持ちも分かるが
lodash化する過程で大量の無駄な処理に気づいた
部分的なベンチマークに拘ると全体的なアルゴリズムが洗練されないのだな
関数言語的プログラミングは汚さを許さないというか、
汚いところが浮き上がって見えるので、処理が洗練されていく

660 :Name_Not_Found:2014/05/18(日) 21:21:57.72 ID:???.net
dom要素をcloneNode(true)して、id属性だけは削除したいです
しかしcloneしたもののidにヌルストリングやnullを代入しても消えません
deleteで削除しても駄目です
どうすれば消えるのでしょうか?

661 :Name_Not_Found:2014/05/18(日) 21:48:38.04 ID:???.net
removeAttrib

662 :Name_Not_Found:2014/05/18(日) 21:57:28.74 ID:???.net
それ用のメソッドがあったんですね
ありがとうございました

663 :Name_Not_Found:2014/05/18(日) 22:06:10.25 ID:???.net
テキストを書き換えるときはinnerHTMLを使うとDOMが壊れるからやめろっていいますけど
これってバグなんじゃないのでしょうか

664 :Name_Not_Found:2014/05/18(日) 22:37:32.31 ID:???.net
違うでしょうね

665 :Name_Not_Found:2014/05/18(日) 22:37:37.34 ID:???.net
そんな話聞いたことない

666 :Name_Not_Found:2014/05/18(日) 22:39:02.34 ID:???.net
じゃあまず聞いたことある人いませんか?

667 :Name_Not_Found:2014/05/18(日) 22:40:21.46 ID:???.net
<span id="testnode">before</span>
a=document.getElementById("textnode");
a.innerHTML="after";//これはOK

<span id="testnode"><a href="http://hoge.com/">before</a></span>
a=document.getElementById("textnode");
a.innerHTML="<a href=\"http://hoge.com\">after</a>";//これはだめ

という話 そしてやめろってのはeval系みたいな作用でブラウザによろしくないという話で
動くには動く。ただそんなコード使ってる人は初心者と言われて当然

<span id="testnode"><a href="http://hoge.com/">before</a></span>
a=document.getElementById("textnode");
b=document.createElement("a");b.href="http://hoge.com/";
b.innerHTML="after";a.appendChild(b);//こうするのが通常

これは10000回繰り返すと速度が10倍遅いんだけどとかいう話ではなく
数十回レベルでもハッキリと遅いのが見える 明らかにブラウザに負荷をかけてる

668 :Name_Not_Found:2014/05/18(日) 22:43:47.27 ID:???.net
>>663
テキストを書き換えるなら
element.textContent や textNode.data の方が
より適切ってことではないの?
( < や > は実体参照に置換してくれる)

実際に要素を生成することも含むならやめる必要はないと思う
(その場合に DOMが壊れるとは具体的に何を意味するのかわからん)

669 :Name_Not_Found:2014/05/18(日) 22:47:45.17 ID:???.net
testnodeとtextnodeが間違ってることに気づいた

そしてDOMが壊れるってのだとこっちかー
<div id="aaa"><div id="bbb">cliok!!</div></div>
a=document.getElementById("aaa");
b=document.getElementById("bbb");
b.addEventListener("click", function(){alert("test")},false);
a.innerHTML.replace("cliok","click");//イベント消えちゃうよー

670 :Name_Not_Found:2014/05/18(日) 22:48:57.28 ID:???.net
連投すまん 三度目の正直、次からはしっかり確認する。最終行
a.innerHTML=a.innerHTML.replace("cliok","click");
が正解

671 :Name_Not_Found:2014/05/18(日) 22:50:03.56 ID:???.net
innerHTMLはdomを真新しいものに置き換えるので
変数がその参照を持っていたらまずいとかその程度のことだろ

672 :Name_Not_Found:2014/05/18(日) 23:08:56.27 ID:???.net
>>665
え、驚きなんですが・・・?
徳丸先生とかあごちゃんのtwitterチェックしてませんの?
ちょっと前に話題に上がってるネタですよ

673 :Name_Not_Found:2014/05/18(日) 23:12:59.20 ID:???.net
>>664-666
無知って恥ずかしいですね

>>667
evalみたいなっていうのは何の話なのかよくわかりませんが
そういうことではなくてinnerHTMLで書き換えるとDOMが壊れるのでXSSが起こるのはinnerHTMLがdomのめんどうみないのがおかしいんじゃないかって話です

674 :Name_Not_Found:2014/05/18(日) 23:14:28.49 ID:???.net
>>672
http://d.hatena.ne.jp/hasegawayosuke/20140508/p1
これかぁ その二方は知らないけど、この記事書いてるhasegawaさんならそれなりに(
この手のバグはそのうち治るから放置でいいよ(´・ω・)

675 :Name_Not_Found:2014/05/18(日) 23:14:49.65 ID:???.net
JavaScriptの情報のアンテナ低いやつ多すぎて話になんねえわ

676 :Name_Not_Found:2014/05/18(日) 23:15:30.06 ID:???.net
だからなんでdomが壊れるんだよ
壊れねーよ

677 :Name_Not_Found:2014/05/18(日) 23:16:36.49 ID:???.net
>>676
情弱バカは書き込むんじゃねえよ
壊れるんだよ

678 :Name_Not_Found:2014/05/18(日) 23:17:36.04 ID:???.net
壊れてたまるかよw
そんなことで壊れるならプログラム動かねーから

679 :Name_Not_Found:2014/05/18(日) 23:19:27.52 ID:???.net
>>673
いくつか想像はつきますが、事象を特定できないので質問するならもっと正確に質問して下さい。
「DOMが壊れる」って何ですか?
本当に理解できているのかあやしくなる表現ですね。

680 :Name_Not_Found:2014/05/18(日) 23:21:42.53 ID:???.net
>>678-679
もうお前みたいなウルトラのバカは勉強してから書き込めよ
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet

681 :Name_Not_Found:2014/05/18(日) 23:22:45.38 ID:???.net
あきらかに理解してないだろ
他人の書いた文章をそのまま使うな
自分の頭で咀嚼してから自分の言葉で表現しろ
それがB級以上のプログラマーの在り方だ

682 :Name_Not_Found:2014/05/18(日) 23:26:45.66 ID:???.net
>>667 >>668 >>669 >>670 ここらへんのネタか
>>672 >>674 こっちのネタかは

質問者の文だと分からんよね 後者っぽいけど
そして、理解せず質問するなってのは変じゃないか
理解出来てたら質問スレに来ないと思う

683 :Name_Not_Found:2014/05/18(日) 23:28:20.57 ID:???.net
innerHTMLにどんな値を代入しようが、「壊れる」ということはないと思うんだけど
「想定しない木構造になってしまう」という意味?
なんにせよユーザー入力された値を信用してそのまま使うなというのはHTMLに限らずだね

684 :Name_Not_Found:2014/05/18(日) 23:28:30.22 ID:???.net
なるほど
一理ある

685 :Name_Not_Found:2014/05/18(日) 23:31:02.65 ID:???.net
>>674
これはinnerHTMLのバグじゃないだろ

686 :Name_Not_Found:2014/05/18(日) 23:31:41.12 ID:???.net
domが壊れるんじゃなくてinnerHTMLが間違ってるんじゃん
フォームごとinnerHTMLで渡すとかどんな状況だ?
そんなくそコード普通は書かないから

687 :Name_Not_Found:2014/05/18(日) 23:33:21.05 ID:???.net
>>682
理解出来なくて質問するのはいいとしても、「知ったかぶりで適当な事を発言して、他人に知らないんですか?」と嘯くのは勘弁してほしいわ

688 :Name_Not_Found:2014/05/18(日) 23:33:59.93 ID:???.net
>>これってバグなんじゃないのでしょうか

バグ以外の何ものでもないだろうな

689 :Name_Not_Found:2014/05/18(日) 23:40:19.74 ID:???.net
よく分からないから単純な再現コード書いてください

690 :Name_Not_Found:2014/05/18(日) 23:41:40.27 ID:???.net
>>687
いや理解できないのはお前がそれを知らないから理解できないだけ
>>680
を全文読みましょう
少なくともinnerHTMLに関連する箇所だけでも読みましょうね

691 :Name_Not_Found:2014/05/18(日) 23:42:00.01 ID:???.net
何者にもなれないお前たちに告げる


692 :Name_Not_Found:2014/05/18(日) 23:42:46.21 ID:???.net
ここで聞いたおれが一番のバカだったわ
コアな部分にはあんまり興味のないお遊び野郎しかいなくて残念だ

693 :Name_Not_Found:2014/05/18(日) 23:43:41.50 ID:???.net
確かに金にならないものに興味は無い

694 :Name_Not_Found:2014/05/18(日) 23:44:20.49 ID:???.net
いやだから実証コード書けよ

695 :Name_Not_Found:2014/05/18(日) 23:45:18.75 ID:???.net
>>694

>>680のリンクにありますが?ちゃんと読んでから書き込めしろや東京スカイツリーバカか

696 :Name_Not_Found:2014/05/18(日) 23:46:36.28 ID:???.net
そんなのいちいち読んでられるか
単純な実証コードって言ってんだろ
お前が理解した範囲で書けよ

697 :Name_Not_Found:2014/05/18(日) 23:47:42.37 ID:???.net
「ボクちゃんは自分で考えることも出来ないので
代わりに考えてください」って言ってるようにしか見えない

698 :Name_Not_Found:2014/05/18(日) 23:49:07.83 ID:???.net
>>690
なら初めから具体的に質問しろよ
質問者はどれにも触れてないのに、質問内容が理解出来る訳ないだろ
>663から>680を確定させるには情報が不足してるとは思わないのか

699 :Name_Not_Found:2014/05/18(日) 23:49:19.43 ID:???.net
>>696
単純なコードというレベルのものが>>680ありますよ?
初級者は無理に回答しなくていいのよ^^

700 :Name_Not_Found:2014/05/18(日) 23:50:33.03 ID:???.net
>>698
もうね情弱は無理に答えなくていいって
innerHTMLのバグを知らないお前はくちだすなよ

701 :Name_Not_Found:2014/05/18(日) 23:52:21.96 ID:???.net
innerHTMLのバグが一つだけだと確信している時点でいろいろとダメだな

702 :Name_Not_Found:2014/05/18(日) 23:52:46.09 ID:???.net
あのーこれは脆弱性の話なんですから、
innerHTMLで書き換えると壊れるんじゃなくて
innerHTMLに入れる文字の話でしょう?

703 :Name_Not_Found:2014/05/18(日) 23:57:40.79 ID:???.net
初めから>>680を出していたならここまで荒れなかっただろうに
質問の仕方がお粗末だったな

704 :Name_Not_Found:2014/05/19(月) 00:03:50.21 ID:???.net
どれが質問者か区別つかないし、>>680で確定なのかも怪しいよ
質問者だけはわかってるんだろうけどね

705 :Name_Not_Found:2014/05/19(月) 00:10:28.47 ID:???.net
荒らすための質問だからな。

706 :Name_Not_Found:2014/05/19(月) 00:19:28.94 ID:???.net
これがアスペフィルタの人なのか?
いろいろと酷い

707 :Name_Not_Found:2014/05/19(月) 00:23:26.45 ID:???.net
こんな奴と一緒にすんなカス

708 :Name_Not_Found:2014/05/19(月) 00:27:59.68 ID:???.net
あの人もわさと曖昧な質問をしてたからまあ、似たようなものか

709 :Name_Not_Found:2014/05/19(月) 00:31:40.62 ID:???.net
<script>
var canvas;
var c;
function draw() {
c.fillText("test", 10, 20);
}
function init() {
canvas = document.getElementById("canvas1");
c = canvas.getContext("2d");
}
</script>
は通るのに
var canvas = document.getElementById("canvas1");
var c = canvas.getContext("2d");
として外部変数にするとエラーがでるのはなぜでしょうか

710 :Name_Not_Found:2014/05/19(月) 00:40:43.61 ID:???.net
内部変数にすると、の間違いじゃなくて?

内部変数にすると、で正しければ
init内でvar 〜と宣言した変数は、init内でのみ使えて、init外では使えなくなるのです。
そして、外で同じ名前の変数があった時は、その内容を変えず維持します。
a="1111";
function test(){
var a="2222";alert(a);
};
test()//2222と表示される(test内部でa=2222となっている)
alert(a);//1111と表示される(外側のaは2222になっていない)

711 :Name_Not_Found:2014/05/19(月) 01:20:55.18 ID:???.net
>>709
その init() が呼び出されるタイミングと
var canvas = document.getElementById("canvas1");
が評価されるタイミングが違うんでないのか

getElementById は文書が(より正確にはその要素が)読み込まれていない時点で呼び出されたなら、当然 null を返す

712 :Name_Not_Found:2014/05/19(月) 01:29:47.06 ID:???.net
styleは属性の個々の子属性も削除するにはremoveAttributeした方がいいんですか?

713 :709:2014/05/19(月) 01:29:59.09 ID:???.net
みなさんありがとうございます
>>711
<body onload=init()>
var canvas = document.getElementById('sample');
var ctx = canvas.getContext('2d');
function init() {
ctx.clearRect(0, 0, 200, 200);
ctx.fillRect(0, 0, 10, 10);
}
これはまだ読み込まれていないのですか?

714 :Name_Not_Found:2014/05/19(月) 01:42:46.15 ID:???.net
上の方で言ってる問題って
フォーム関係の要素に``が入っていたらinnerHTMLが文字化けするってことですか?

715 :Name_Not_Found:2014/05/19(月) 01:53:35.29 ID:???.net
それと文字化けは関係ない

716 :Name_Not_Found:2014/05/19(月) 01:59:33.70 ID:???.net
>>713
その記述のみから断言はできないがおそらくそうだろう
スクリプト実行と DOM の読み込みタイミングについて調べるべし

onload はDOMと画像などのリソースが読み込まれた後に実行されるので
canvas = ... , ctx = ... を init()の中に入れればおそらく動く
内部変数とかは関係ない

717 :Name_Not_Found:2014/05/19(月) 02:30:28.85 ID:???.net
>>715
じゃあ何と関係があるんですか?

718 :Name_Not_Found:2014/05/19(月) 02:41:38.19 ID:???.net
質問者はもちろん回答者もこの問題の本質を分かっていないように正直みえるのですが・・。
問題の本質は何でしょうか?

719 :Name_Not_Found:2014/05/19(月) 02:56:44.73 ID:???.net
>>718
最初の質問 >>663 で innerHTML はバグとか言っている所から
誤解と混乱を生じさせたことが問題

バグとは仕様に沿わない実装のふるまいを意味するものであり
セキュリティ云々とは関係ない

真の意味の「問題」は質問の中には元々存在していない

720 :Name_Not_Found:2014/05/19(月) 03:02:07.27 ID:???.net
いや、バグはありますよね?

721 :Name_Not_Found:2014/05/19(月) 03:03:55.48 ID:???.net
でもDOMが壊れるってのは否定されましたね。

722 :Name_Not_Found:2014/05/19(月) 03:07:19.56 ID:???.net
元の質問はこの際どうでもいいですが
質問者はinnerHTMLに問題があるということを報告をしたのですから
それについては認識しておくべきでは?

723 :Name_Not_Found:2014/05/19(月) 04:49:18.89 ID:???.net
<div id="hoge">
〜HTMLの表・10KB分〜
</div>
という大きめの表がHTML内にあって、
同じHTMLページ内に全く同じ「〜HTMLの表・10KB分〜」を
もう一度表示させたいのですが、
1行くらいでサクッと表示できるScriptはないでしょうか?

724 :Name_Not_Found:2014/05/19(月) 06:18:18.97 ID:???.net
[key,value,key,value]
となっている配列からオブジェクトを作る関数は
lodashにないのでしょうか?

725 :Name_Not_Found:2014/05/19(月) 06:42:13.41 ID:???.net
>>723
html
<div id="hoge">
〜HTMLの表・10KB分〜
</div>
<div id="fuga">
</div>

javascript
document.getElementById('fuga').innerHTML = document.getElementById('hoge').innerHTML;

726 :Name_Not_Found:2014/05/19(月) 07:09:52.64 ID:???.net
forEachなどで1以外の増分のループを実現するにはどうしたらいいのでしょうか?

727 :723:2014/05/19(月) 09:25:14.68 ID:???.net
>>725
ありがとうございました!
ずっとHTMLの容量ばかり食って困っていたんです

728 :Name_Not_Found:2014/05/19(月) 09:52:45.15 ID:???.net
>>719
ちょっと違うね

729 :Name_Not_Found:2014/05/19(月) 09:59:12.13 ID:???.net
>>719
innerHTMLで書き換えるとDOMが壊れる事でXSSを発生させる原因になる
セキュリティと関係ない話ではない
これで話がわからないともうあなたは話の輪に入れないから食いつかないほうが良い

730 :Name_Not_Found:2014/05/19(月) 10:10:37.83 ID:???.net
>>726
function hogeEach(array,m) {
if (array.length-m>1) {
array.forEach(function(_element, _index, _array) {
if (_index<m) { return; }
console.log(_element);
});
} else { return m; }
return array.length;
};

var arr = [1,2,3];
var index = arr.length;

// update
arr.push(4);
arr[arr.length] = 5;
index = hogeEach(arr,index);

// update
arr.push(6);
arr.push(7);
index = hogeEach(arr,index);

// update
arr.push(8);
index=hogeEach(arr,index);

// update
arr.push(9);
index=hogeEach(arr,index);

731 :Name_Not_Found:2014/05/19(月) 11:32:58.71 ID:???.net
>>729
innerHTMLの読み出しがおかしいだけだから「domが壊れる」はおかしい
domは壊れない

732 :Name_Not_Found:2014/05/19(月) 11:35:09.23 ID:???.net
>読み出し
>読み出し
>読み出し
>読み出し
>読み出し

733 :Name_Not_Found:2014/05/19(月) 11:37:31.66 ID:???.net
え、どうしたの
発狂したの

734 :Name_Not_Found:2014/05/19(月) 11:39:33.80 ID:???.net
もう触んないほうがいいって

735 :Name_Not_Found:2014/05/19(月) 12:02:58.23 ID:???.net
人をdisりたいだけの奴らがこれだけいるんだから、語彙には注意すべきだよなとは思うわ

736 :Name_Not_Found:2014/05/19(月) 12:11:15.52 ID:???.net
どう見ても人をディスりたいだけの奴の意見だな

737 :Name_Not_Found:2014/05/19(月) 15:21:01.10 ID:???.net
http://www.koizumi-lt.co.jp/product/webcatalog/index.html
このサイトの「カタログを開く」をクリックしてwebブラウザで表示されるpdfファイルを
全ページ一括でローカルに落とす方法ってありますか?

特にJavaScriptを勉強をしているわけではないのですが
リンク先のアドレスがjavascript:akarih1();と表示されているので質問させて貰いました
スレ違いでしたらすいません・・・

738 :Name_Not_Found:2014/05/19(月) 15:24:14.21 ID:???.net
スレ違いじゃなくて、板違いだねw

739 :Name_Not_Found:2014/05/19(月) 16:42:33.65 ID:???.net
勉強しているわけではないのでしたら今から勉強してください

740 :Name_Not_Found:2014/05/19(月) 21:29:28.96 ID:???.net
innerHTMLが脆弱性を起こすのではなくて、
エスケープしてないから脆弱性を起こすという話

SQLはインジェクションを起こすから
使うなといっているようなもんw

741 :Name_Not_Found:2014/05/19(月) 22:49:35.93 ID:???.net
そんな話じゃないだろw

742 :Name_Not_Found:2014/05/19(月) 23:52:02.18 ID:???.net
>>740
そんな表面的な話じゃない
もっと深い内部仕様の話

743 :Name_Not_Found:2014/05/20(火) 01:05:23.12 ID:???.net
contenteditable領域でも読み取ったら文字が変化してることはあるのでしょうか?

744 :Name_Not_Found:2014/05/20(火) 01:05:56.45 ID:???.net
「innerHTMLで読み取ったら」でした
もしそうならDOMから読むとかしないといけないのでしょうか

745 :Name_Not_Found:2014/05/20(火) 01:47:24.44 ID:???.net
>>724
ライブラリの質問は下記へ
【jQuery】JavaScript ライブラリ総合質問所 vol.3
ttp://toro.2ch.net/test/read.cgi/hp/1369444026/l50


>>726
forEachは、すべての要素を処理する
しかも、要素を処理する順番は決まっていないし、指定もできない

746 :Name_Not_Found:2014/05/20(火) 01:58:05.40 ID:???.net
引数の順番についてですが、
挿入するデータと挿入される要素があったとしたら
どっちが先になると思いますか?

insertHoge(data, element)
insertHoge(element, data)

dotch?

747 :Name_Not_Found:2014/05/20(火) 02:08:35.05 ID:???.net
質問です

var i=0;
function fun(){
if(i==0){
  i++;
  fun();
 }else{
  return 999;
 }
}

function print_1(){
 var hoge =fun();
 alert(hoge);
}
とやるってprint_1()を実行するとundefinedが表示されます
関数を2回実行されるとタイムラグみたいなのが発生するんでしょうか?

748 :Name_Not_Found:2014/05/20(火) 02:31:30.94 ID:???.net
>>747
そのコードは次と等価になる

var i=0;
function fun(){
if(i==0){
  i=2;
  return undefined;
 }else{
  return 999;
 }
}

749 :747:2014/05/20(火) 02:34:42.01 ID:???.net
>>748
やっぱ1回目のが返り値として入っちゃうんですか
fun(){
func()
}
でもちゃんと2回目の返り値が入るまで待ってもらう方法ってないんですかね?

750 :Name_Not_Found:2014/05/20(火) 02:58:04.55 ID:???.net
>>749
>待ってもらう
何を求めているのかわからん
1 回目と2回目から先は どうふるまわせたいのだ?

>>748 訂正
× i=2;
× i=1;

>>745
>しかも、要素を処理する順番は決まっていないし、指定もできない
そんな筈は無い
for in と取り違えてないか?

751 :Name_Not_Found:2014/05/20(火) 03:15:21.94 ID:???.net
内部関数を使うのじゃ

752 :Name_Not_Found:2014/05/20(火) 03:34:41.21 ID:???.net
var i=0;
function fun(){
if(i==0){
  i++;
  return fun();
 }else{
  return 999;
 }
}

753 :Name_Not_Found:2014/05/20(火) 03:38:38.88 ID:???.net
>>726
Array#concat, Array#slice で index = 1 を除く配列を再構築し、Array#forEach で処理してはどうでしょう?

>>745
Array.prototype.forEach は 0 から昇順に処理していく仕様であり、処理順はランダムではありません。
別の仕様と勘違いしておられるのでは?
http://es5.github.io/#x15.4.4.18

754 :Name_Not_Found:2014/05/20(火) 03:44:03.44 ID:???.net
>>746
関数の内容に依存するとしかいえません。
必須の引数を第一引数にはしますが、どちらが必須か判断できる情報が出てないので。
蛇足ですが、Function#length があるのでオプション扱いの引数なら仮引数は指定しません。

755 :Name_Not_Found:2014/05/20(火) 04:31:37.29 ID:???.net
>>746
どっちとかはないからDOMの操作と合わせてみるとかはどうですか。
var insertedElement = parentElement.insertBefore(newElement, referenceElement)

756 :Name_Not_Found:2014/05/20(火) 05:38:26.95 ID:???.net
ネストされたオブジェクト
hoge.moge.poge.page
にアクセスしたいですが、hogeの内容は不定で、
hoge.moge
などが存在する時もしない時もあるとします。
もし存在しない時に
if (hoge.moge.poge.page)
のような条件判定をすると、末端のpageの有無を調べる前にエラーになってしまいます
こういった複数階層のオブジェクトの属性をエラーを出さずに調べることの出来る
ライブラリみたいのありませんか?

757 :Name_Not_Found:2014/05/20(火) 06:13:34.57 ID:???.net
>>756
var hoge = {};
if(hoge && hoge.moge && hoge.moge.poge && hoge.moge.poge.page) { console.log(hoge); }
hoge.moge = {}
if(hoge && hoge.moge && hoge.moge.poge && hoge.moge.poge.page) { console.log(hoge); }
hoge.moge.poge = {};
if(hoge && hoge.moge && hoge.moge.poge && hoge.moge.poge.page) { console.log(hoge); }
hoge.moge.poge.page = {};
if(hoge && hoge.moge && hoge.moge.poge && hoge.moge.poge.page) { console.log(hoge); }

758 :Name_Not_Found:2014/05/20(火) 06:23:23.21 ID:???.net
ありがとうございます
ですがこれは例で、階層を構成するキーの名前や深さは毎回色々変わります

759 :Name_Not_Found:2014/05/20(火) 06:55:10.81 ID:???.net
>>756
構文的には

((( hoge || {} ).moge || {} ).poge || {} ).page

のようにするのが単純かな
しかし例えば hoge.moge が undefined でもオブジェクトでもない場合はエラーになる

より汎用的には

function getNested(obj, names){
// obj は根元のオブジェクト, names は名前の配列
for(var i = 0; i < names.length; i++ ){
if(obj instanceof Object){
obj = obj[ names[i] ];
} else if (obj === undefined){
return undefined;
} else {
??? // undefined でもオブジェクトでもない場合
}
}
return obj;
}

getNested(hoge, ['moge', 'poge', ...]);

760 :Name_Not_Found:2014/05/20(火) 07:10:55.68 ID:???.net
便乗で質問なのですがtry catchでスルーしちゃだめなのですか

761 :Name_Not_Found:2014/05/20(火) 07:12:49.14 ID:???.net
>>759
ありがとうございます
自分もほぼ同じ処理を今書いたところでした・・

762 :Name_Not_Found:2014/05/20(火) 07:16:19.59 ID:???.net
例外は基本的に異常を目立つ方法で知らせるものなので
通常の範疇で発行するのは控えた方がいいと本に書いてありました

763 :Name_Not_Found:2014/05/20(火) 07:32:17.56 ID:???.net
例外を投げるんじゃなくてエラーをそのままにしておくので少し違いましたね

764 :Name_Not_Found:2014/05/20(火) 11:21:09.91 ID:???.net
>>761
プロパティアクセス演算子を ToBoolean で判定するより、in 演算子で判定する方が好ましいと思います

765 :Name_Not_Found:2014/05/20(火) 11:24:37.76 ID:???.net
>>760,762
例外を放置することになるので、特殊なケースを除いて出来るだけ避けるべきです
通常は例外が発生しないようにコードを組みます

766 :Name_Not_Found:2014/05/20(火) 11:33:03.89 ID:???.net
>>762,763,765
なるほど勉強になりました
ようはデバッグのときに使えということなのでしょうかね

767 :Name_Not_Found:2014/05/20(火) 11:54:56.67 ID:???.net
>>766
デバッグで try-catch は使いませんよ。
例外を回避したら、エラー不明でむしろデバッグできなくなります。
デバッグするなら例外は発生させるべきです。

そもそも、例外とは意図的に発生させるものです。
TypeError なら特定の型以外の引数は受け付けないという事。
ならば、関数呼び出しする前に typeof 演算子で型判定を入れれば例外を回避できます。
多くの場合はこのように実行前に回避できますが、中には関数呼び出しするまで例外条件を判定できないケースがあり、その場合に try-catch を使用します。

768 :Name_Not_Found:2014/05/20(火) 14:58:08.77 ID:???.net
広告を非表示にするアドオンに対抗するためのantiblockっていうのあるじゃないですか
これは広告を非表示にするアドオンを入れると
Please disable your なんちゃらってメッセージが出てページ内の表示をブロックされるんですが
このantiblockが生成する要素をconsoleから消してるんですが、消したらすぐにまたブロックの要素が表示されます
http://antiblock.org/?p=v3&demo
これってどういう仕組みになっているのでしょうか?

769 :Name_Not_Found:2014/05/20(火) 16:02:55.30 ID:???.net
>>768
要素の削除を検知する mutation event を利用しているっぽい
コードの中に
addEventListener("DOMNodeRemoved", ... )
がある
そのハンドラで削除された要素を再生成しているのだろう

770 :Name_Not_Found:2014/05/20(火) 16:07:47.08 ID:???.net
まじすか
クソうぜえっすね
どうにもならなそうですね
今は降伏することにします

771 :Name_Not_Found:2014/05/20(火) 16:17:54.83 ID:???.net
Chromeなら開発者ツールからコード直接編集できるだろ

772 :Name_Not_Found:2014/05/20(火) 16:26:09.11 ID:???.net
エディターやらIDEやらってなに使ってます?

773 :Name_Not_Found:2014/05/20(火) 16:47:55.76 ID:???.net
atom

774 :Name_Not_Found:2014/05/20(火) 17:21:25.47 ID:???.net
>>770
削除ではなく、非表示にしてみてはどうでしょう?

775 :747:2014/05/20(火) 17:22:52.51 ID:???.net
>>750-752
ありがとうございます
内部関数で解決しました

776 :Name_Not_Found:2014/05/20(火) 17:55:21.12 ID:???.net
>>774
その手がありますね!ありがとうごじあます

777 :Name_Not_Found:2014/05/20(火) 17:55:48.16 ID:???.net
>>771
ページを移動するたびに手動で編集するのは堪えますw

778 :Name_Not_Found:2014/05/20(火) 20:13:54.14 ID:???.net
>>759

> if(obj instanceof Object){

これやって、一体何のメリットが有るんですか?


(注意 俺は無駄だと思ってる)

779 :Name_Not_Found:2014/05/20(火) 20:31:52.07 ID:???.net
最後のelseがあるからじゃない

780 :Name_Not_Found:2014/05/20(火) 21:40:15.22 ID:???.net
var xx=function(){}
ってする人はバカなんですか?
みにくいんですけど

781 :Name_Not_Found:2014/05/20(火) 21:57:08.13 ID:???.net
>>788
あー、それは俺も思う。
必要な場合はそれでいいけど、
普通は、function xx() {} であるべきだよな。

782 :Name_Not_Found:2014/05/20(火) 22:06:45.79 ID:???.net
どっちでもいいんでないの
後から変更することもあるから最初から
var xx=function(){}
にしとけば手間を省けるとか
エディタのシンタックス強調の設定を手抜きしたいとか

>>778
チェックしないと obj[name] がエラーになるやん

783 :Name_Not_Found:2014/05/20(火) 22:14:40.76 ID:???.net
>>780
変数が実体化されるタイミングが違う

784 :Name_Not_Found:2014/05/20(火) 22:21:05.01 ID:???.net
タイミングとはもっと詳しくおしえてください

785 :Name_Not_Found:2014/05/20(火) 22:26:49.29 ID:???.net
ぐぐれかす

786 :Name_Not_Found:2014/05/20(火) 22:30:08.53 ID:???.net
タイミングが違うのは判った上でだろ

787 :Name_Not_Found:2014/05/20(火) 22:37:37.84 ID:???.net
タイミングが違う事がわかってるなら「バカなんですか?」とバカな発言はしないだろ

788 :Name_Not_Found:2014/05/20(火) 22:43:00.32 ID:???.net
>>784
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/10_Execution_Contexts.html#section-10.1.3
安易に「バカなんですか?」なんて質問すると冷たい反応しか得られないから注意してね

789 :Name_Not_Found:2014/05/20(火) 22:49:25.05 ID:???.net
普通に考えるとタイミングが違うだけなら、var xx=function(){} と書くメリットがまったく感じられないんですがw
バカは言いすぎかもしれませんが、頭が悪いかなと思います

790 :Name_Not_Found:2014/05/20(火) 22:58:58.40 ID:???.net
>>778
objがプリミティブ値(Number | String | Boolean Null | Undefined)
かどうかを判定してると読めばいいんじゃない?

function getNested(obj, names){
var v = obj[ names[0] ];

/* nameの最後、またはプリミティブ値に達するまでobjを探る */
for (var i = 1; i < names.length; i++) {
if (! v instanceof Object) break;
v = v[ names[i] ];
}

return v;
}

791 :Name_Not_Found:2014/05/20(火) 23:42:10.77 ID:???.net
>>789
まあお前はその程度だよ

792 :Name_Not_Found:2014/05/20(火) 23:58:49.28 ID:???.net
>>791
その程度のレスしかできないあなたもその程度

793 :Name_Not_Found:2014/05/21(水) 00:05:40.17 ID:???.net
変数に代入してるならそれを何度か使うんだろ
一度しか使ってないなら、何度か使う可能性があるのかもしれない

794 :Name_Not_Found:2014/05/21(水) 00:57:55.28 ID:???.net
>>789
どちらにしても小馬鹿にした態度は変わらないのね…

初めから結論が出ているなら質問しない方がいいと思うよ
通常は結論を保留するからこそ質問するものだけど、あなたの質問は逆に見えるからね
両者の違いを理解しない状態で一方を馬鹿と断ずるのは賢い選択とはいえないよね

795 :745:2014/05/21(水) 02:14:18.04 ID:???.net
>>745
自己レス。漏れの勘違い

forEachは、順番に処理するんだね
for inが、順序不定だったか

796 :Name_Not_Found:2014/05/21(水) 02:30:27.12 ID:???.net
結局
var a = function(){}

function a(){}
のそれぞれの使い分けを詳しく説明できる人いないの?

797 :Name_Not_Found:2014/05/21(水) 02:36:43.70 ID:???.net
むしろ何が分からないのかが分からない

798 :Name_Not_Found:2014/05/21(水) 02:47:45.23 ID:???.net
既に説明されてるし、これ以上詳しく説明しようとも思わない

799 :Name_Not_Found:2014/05/21(水) 02:56:49.43 ID:???.net
あらたに判明した問題に対して
フラグを新設することで対応して
後から何やってるか分かりにくくなる現象の名前は何ですか?

800 :Name_Not_Found:2014/05/21(水) 02:58:50.37 ID:???.net
場当たり対応

801 :Name_Not_Found:2014/05/21(水) 09:08:07.58 ID:???.net
ぬるぽきゃんせらー

802 :Name_Not_Found:2014/05/21(水) 09:31:03.28 ID:???.net
>>798
どのレスのことなのかレス番つけてください

803 :Name_Not_Found:2014/05/21(水) 11:09:52.06 ID:???.net
>>802
>>788
ES5.6 の情報なら>>5

804 :Name_Not_Found:2014/05/21(水) 12:06:33.67 ID:???.net
クロージャって、関数が作成された後にも
その変数の内容はリアルタイムに追尾されるんですか?

関数を作成してクロージャにする
→元関数の中で変数を変更する
→作成した変更の中で渡された変数を参照する

変数の内容は?

805 :Name_Not_Found:2014/05/21(水) 12:07:06.24 ID:???.net
作成された関数の中で、でした

806 :Name_Not_Found:2014/05/21(水) 12:11:39.33 ID:???.net
(function (){
var a = 'hoge';
_.delay(function(){
console.log(a);
},60);
a = 'moge';
}());

とやったらリアルタイムに反映してました

807 :Name_Not_Found:2014/05/21(水) 12:13:57.16 ID:???.net
>>796
違いを理解したからこそ「頭が悪い」と判断したんじゃなかったの?

808 :Name_Not_Found:2014/05/21(水) 18:23:04.78 ID:???.net
関数の中で関数を作成することでしかクロージャは実現できないのでしょうか?
既に存在する関数に変数を封入することはできませんか?

809 :Name_Not_Found:2014/05/21(水) 18:26:03.30 ID:???.net
>>808
具体的に何がしたいんだ?
よそから渡された関数の環境を書き換えたいとか?

810 :Name_Not_Found:2014/05/21(水) 19:52:22.51 ID:???.net
>>801 ガッ

811 :Name_Not_Found:2014/05/21(水) 20:14:33.19 ID:???.net
>>808
その関数専用の大域変数を作りたいということなら
bind を使うのがいいんでないか

812 :Name_Not_Found:2014/05/21(水) 23:11:05.52 ID:???.net
>>808
おかしな事を言っている
関数は定義した時点で使う変数が決まっている
後で追加するという事はその変数を使うコードはどうするんだ?

813 :Name_Not_Found:2014/05/22(木) 00:38:09.91 ID:???.net
参照渡しして書き換えるみたいなことが簡便に出来ないかと思ったのです

814 :Name_Not_Found:2014/05/22(木) 00:51:46.58 ID:???.net
>>813
それがオブジェクトだったら普通に引き数で渡して
プリミティブだったらインラインで配列を作成して引き数で渡すかね

815 :Name_Not_Found:2014/05/22(木) 01:22:09.32 ID:???.net
>>813が何をしたいのかよく判らんが、こういう感じ?

function foo(name, age){
var data = {age: age};
function ret() {
console.log(name + ": " + data.age);
}
ret.data = data;
return ret;
}

var fn = foo("kikko", 17);
fn(); // kikko: 17

fn.data.age = 49;
fn(); // kikko: 49

816 :Name_Not_Found:2014/05/22(木) 02:06:47.52 ID:???.net
var a = function(){}
変数に代入して、aで使うと、見にくいだけで、特に損がない

関数名で使うと、その度にインタプリタが、
関数が同じかどうかを確認したり、
ちょっとした書き間違いや引数の違いでも、
どう処理されるかわからない

JSは間違いでもエラーにならず、処理が進むため、
余計な間違いを避けたい

817 :Name_Not_Found:2014/05/22(木) 02:30:38.82 ID:???.net
変数に代入して、aで使うと、見にくいだけで、特にメリットがない。

の間違いだな。

818 :Name_Not_Found:2014/05/22(木) 02:46:08.76 ID:???.net
変数に代入して複数箇所でコールバックとして使うんだろ
はい論破

819 :Name_Not_Found:2014/05/22(木) 02:53:57.45 ID:???.net
いつまでこの話題を引きずるんだろう
自己完結してるなら黙ってればいいのにね
指摘回答を待ってるのが透けて見える

820 :Name_Not_Found:2014/05/22(木) 03:00:09.91 ID:???.net
別に変数に代入しなくても複数箇所でコールバックとして使えるんじゃないの?

821 :Name_Not_Found:2014/05/22(木) 06:21:07.17 ID:???.net
そう言われればそうか

822 :Name_Not_Found:2014/05/22(木) 06:29:56.46 ID:???.net
関数定義は関数定義より前のコードで使えるが
代入は代入してからでないと使えない
したがってスタティックな性質のものなら関数定義、
ダイナミックな性質のものなら代入がいい
はい論破

823 :Name_Not_Found:2014/05/22(木) 06:55:02.62 ID:???.net
関数の定義のスコープは
・関数定義
・関数名に代入
だけですか?
window.a = function() {};
とかすれば関数定義とほぼ同じなのでしょうか

824 :Name_Not_Found:2014/05/22(木) 08:13:06.38 ID:???.net
「関数の定義のスコープは関数定義」
「関数の定義のスコープは関数名に代入」
ってどういう意味?

825 :Name_Not_Found:2014/05/22(木) 09:50:23.23 ID:???.net
>>823
>>803

826 :Name_Not_Found:2014/05/22(木) 10:01:50.12 ID:???.net
>>824
もっと柔軟に文章を読む努力をしてください

>>825
なるほどすっきりしました
ありがとうございました

827 :Name_Not_Found:2014/05/22(木) 11:24:38.88 ID:???.net
代入したほうがメモリが節約できるからね

828 :Name_Not_Found:2014/05/22(木) 12:24:53.58 ID:???.net
それは違うんじゃ・・・

829 :Name_Not_Found:2014/05/22(木) 12:40:21.23 ID:???.net
代入だと上書きされる危険がある
はい論破

830 :Name_Not_Found:2014/05/22(木) 13:19:17.47 ID:???.net
function foo() {
console.log("I'm foo!");
}

var foo = function() {
console.log("I'm bar!");
}

foo(); // I'm bar!

関数定義だって上書きされるけどね。

function foo(){} は、
var foo = function(){} の構文糖と考えていい。
foo.nameに関数名が入ることを除いて違いはない。

831 :Name_Not_Found:2014/05/22(木) 13:23:04.15 ID:???.net
foo = function hoge(){}
ってこともあり得るんだから少し違うんじゃ?

832 :Name_Not_Found:2014/05/22(木) 13:51:30.13 ID:???.net
もう少し詳しく。

833 :Name_Not_Found:2014/05/22(木) 14:30:14.32 ID:???.net
$(document)を関数の中で複数回使う時は別の変数に入れますか?入れませんか?

834 :Name_Not_Found:2014/05/22(木) 14:52:24.08 ID:???.net
指定した文字列のテキストノードを持つ要素を探す方法があれば教えて下さい
例えば <div>ほげほげ</div> のような要素を探したいときに
現在はgetElementsByTagName('div')からforで子ノードを調べています

835 :Name_Not_Found:2014/05/22(木) 15:19:05.71 ID:???.net
>>834
class属性つけるのアリなら

html
<div><div class="hoge">hogeほげほげhoge</div>
<span>ほげほげ</span>
<div>ほげほげ</div>

javascript
console.log($("div.hoge:contains('ほげほげ')"));

836 :Name_Not_Found:2014/05/22(木) 15:22:03.15 ID:???.net
訂正>>835
html
<div><div class="hoge">hogeほげほげhoge</div></div>
<span class="hoge">ほげほげ</span>
<div class="hoge">ほげほげ</div>

837 :Name_Not_Found:2014/05/22(木) 17:55:14.17 ID:???.net
jqueryのdocument readyっていうやつはjavascriptでどうやるんですか?
window.addEventListenerでloadは違いますよね

838 :Name_Not_Found:2014/05/22(木) 17:56:08.64 ID:???.net
>>834
XPathでもいけると思う

839 :Name_Not_Found:2014/05/22(木) 17:56:36.77 ID:???.net
>>837
DOMContentLoaded

840 :Name_Not_Found:2014/05/22(木) 19:20:20.84 ID:???.net
>>826
いや、努力してもわからんから聞いている

「関数の定義のスコープ」の「スコープ」とは

何から何が見えていることを意味しているのだ?
「だけですか?」の「だけ」とはどのような制約を意味しているのだ?

841 :Name_Not_Found:2014/05/22(木) 19:29:02.69 ID:???.net
そもそもわからなければ、答える・られる人がくるまで
もしくは、質問の補足があるまでスルーすればいい
それかエスパーして解答すればいい

842 :Name_Not_Found:2014/05/22(木) 19:39:10.24 ID:???.net
>>834
文書の変更が許されない/変更したくないなら
NodeIterator か TreeWalker で1個ずつ探索するしかないか

TreeWalker の方が
テキストノード 1 個だけを含む
という条件で要素を探索できるので効率的に行える

巨大な文書で多量の検索がある場合はもっと効率的にやるために
インデックスを作成することになるだろう

843 :Name_Not_Found:2014/05/22(木) 21:17:36.81 ID:???.net
>>841
エスパー回答ばかりで荒れた状況があることを考えると安易に同意できないかな
質問者もある程度の努力は必要かと

844 :Name_Not_Found:2014/05/22(木) 23:41:34.55 ID:???.net
>>829
お前はロンパールームに行って二度と帰って来るな

845 :Name_Not_Found:2014/05/23(金) 00:45:50.60 ID:???.net
ツリーウォーカーとか普通に言ってるけどそれ互換性あんの?

846 :Name_Not_Found:2014/05/23(金) 00:50:53.63 ID:???.net
アナキン・ツリーウォーカーww

847 :Name_Not_Found:2014/05/23(金) 01:21:00.94 ID:???.net
>>845
DOM level 2 なんだがな
https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker
互換性ばかり気にして何もできなくなるのもあほらしい
開発段階はとりあえず動くものが出来上がればいい

>>844
論破、論破と無駄にうざいよなw

ちょっと真似してみるか

はい論破。はい論破。はい論破。はい論破。
はい論破。はい論破。はい論破。はい論破。
はい論破。はい論破。はい論破。はい論破。

848 :816:2014/05/23(金) 01:30:53.87 ID:???.net
>>833
一々、インタプリタが解釈するのを防ぐために、
何回も使うのなら、変数に代入する

こういう感じで使っている
でも効果があるかどうかは、わからない

0〜nMaxの乱数を発生させて、少数点以下を切り捨てる
この処理を何回も呼ぶなら、変数に代入する

var fRnd = Math.random, fFlo = Math.floor;
fFlo(fRnd() * nMax)

気にし過ぎかも知れないけど
VB, C#で、obj.Dataなどのプロパティは、
関数呼び出しだから、何回も呼ぶなら、
変数に代入して使う、という教訓もある

849 :Name_Not_Found:2014/05/23(金) 01:41:54.44 ID:???.net
論破論破言う奴に限って論理が破綻してんだよねw

850 :Name_Not_Found:2014/05/23(金) 01:49:30.25 ID:???.net
パフォーマンス重視だと何度も生成するのはナシですが、
一時変数を作るほど保守性は低下すると思います
「その変数がこの関数の中のどこからどこまでの範囲で使われているか」という判断が発生するので

851 :834:2014/05/23(金) 01:57:45.33 ID:???.net
>>835-836,838,842
レスありがとうございます
一通り試してみたいと思います

852 :Name_Not_Found:2014/05/23(金) 02:12:20.64 ID:???.net
>>848

chromeだと変数に代入しておくとかなり速いね。
他のブラウザだと大差なし。
http://jsperf.com/9d901563b8d277abd95b58e7c483fbe2

853 :Name_Not_Found:2014/05/23(金) 02:29:16.37 ID:???.net
パフォーマンス最適化は多くの場合、保守性非最適化

854 :Name_Not_Found:2014/05/23(金) 09:13:46.07 ID:???.net
ある程度の規模が出てくると、
ハンドラのセットって、
イベントタイプやセレクタのデータを書いたオブジェクトに使って
集中的にaddhandlerしますよね?
そういうことを行う汎用的なソリューションってありますか?

855 :Name_Not_Found:2014/05/23(金) 10:38:23.97 ID:???.net
>>854
「イベントタイプやセレクタのデータを書いたオブジェクトに使って集中的にaddhandler」が不明なのでコードを書いて見てください

856 :Name_Not_Found:2014/05/23(金) 11:02:55.40 ID:???.net
>>854
>ハンドラのセット
セットとはハンドラを設定することなのか?ハンドラの集合なのか?
集中的とは何を何に集中するのか?

このように解釈にはいくつも考えられ、
そのそれぞれについて可能性を考えることは
とてもめんどくさいので答える気がしない

わざと曖昧な文章にしてどんな答えが出てくるかおもしろがってるんじゃないか?

857 :Name_Not_Found:2014/05/23(金) 11:05:44.70 ID:???.net
考えすぎです ハゲますよ

858 :Name_Not_Found:2014/05/23(金) 11:15:33.49 ID:???.net
曖昧な質問しても想像で回答する人が多いからなくならないんだよね
>>389は酷いケースの代表格かと

859 :Name_Not_Found:2014/05/23(金) 11:17:50.65 ID:???.net
分からないなら「自分用の質問じゃないんだな」って思ってスルーすればいいだけでは

860 :Name_Not_Found:2014/05/23(金) 11:20:19.62 ID:???.net
cloudflare.comってところが提供している
lodashのCDNが稀に繋がらなくなるのですが、
CDNは使わない方がいいんでしょうか?

861 :Name_Not_Found:2014/05/23(金) 11:21:03.30 ID:???.net
>わざと曖昧な文章にしてどんな答えが出てくるかおもしろがってるんじゃないか?
そう思うならなぜ放置しないのか

同じような経験を持った回答者なら
あのことを言っているのだな、と閃いてエスパー回答する
不特定多数が出入りするのでその都度、質問の仕方自体を教えるのは効率悪い
本当に困って死にかけている質問なんてそうそうないのだから。
仮にエスパー自体が的外れで間違っていても結局
放置か質問者が次により具体的な質問をすることになる

862 :Name_Not_Found:2014/05/23(金) 11:22:22.26 ID:???.net
そういうこと>>859

863 :Name_Not_Found:2014/05/23(金) 11:24:02.27 ID:???.net
googleCDNではlodashをサポートしてないようですね〜
prototypeなどというオワコンライブラリよりlodashを提供するべきです

864 :Name_Not_Found:2014/05/23(金) 11:42:01.02 ID:???.net
CDN、使えばいいじゃない。キャッシュされてる可能性が高いですし。

ボイラーテンプレート覗くと、以下の様に対策していますね。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.11.1.min.js"><\/script>')</script>

lodashでも同様にできるかと。

865 :Name_Not_Found:2014/05/23(金) 12:29:30.17 ID:???.net
なるほど
繋がらない時用に対応する方法があり得るのですね
ありがとうございました

866 :Name_Not_Found:2014/05/23(金) 12:58:22.77 ID:???.net
arrayのconcatは引数に配列以外をわたしたときpushのように動作しますが
これは仕様ですか?

867 :Name_Not_Found:2014/05/23(金) 13:09:24.28 ID:???.net
>>866
concatはpushの動作になりません

868 :Name_Not_Found:2014/05/23(金) 13:17:05.53 ID:???.net
>>866
一見そうみえますがconcatは非破壊的です
pushは配列のlengthを返します
var a = [1,2,3];
console.log(a.concat([4],5,6));// [1,2,3,4,5,6]
console.log(a);// [1,2,3]
console.log(a.push(4,5));//5
console.log(a);// [1,2,3,4,5]

869 :Name_Not_Found:2014/05/24(土) 23:15:53.83 ID:???.net
localstorageのsetItemの第一引数に変数は使えますか?

870 :Name_Not_Found:2014/05/24(土) 23:54:54.57 ID:???.net
>>869
試してみればいいじゃん。

871 :Name_Not_Found:2014/05/25(日) 00:58:28.66 ID:???.net
localstorageで使える残り容量ってどうやれば知れますか?

872 :Name_Not_Found:2014/05/25(日) 03:30:07.30 ID:???.net
>>871
残りの利用可能容量は Quota Management API を使ってプログラム上で取得することができます。

873 :Name_Not_Found:2014/05/25(日) 04:59:11.79 ID:???.net
最新chromeでwindow.webkitNotificationsが使えなくなってるね
くそが

874 :Name_Not_Found:2014/05/25(日) 05:14:31.10 ID:???.net
https://developer.chrome.com/extensions/notifications
Internal server error

サーバもろくに管理できねーのか

875 :Name_Not_Found:2014/05/25(日) 05:34:41.69 ID:???.net
http://jsbin.com/gucikube/1/edit
notificationsのテストをしようとしてもエラーになるので
console.log(chrome.notifications);
とやったところundefinedと言われます
オブジェクト自体がないなら動くわけありません
chrome.notificationsはchrome28から使えるようになったようですが、
また使えなくなったのでしょうか?

876 :Name_Not_Found:2014/05/25(日) 09:50:54.90 ID:???.net
>>859
と言うことは、ただのアホか

877 :Name_Not_Found:2014/05/25(日) 16:15:46.95 ID:???.net
キー入力の状態を明示的に「bodyをクリックした時と同じような状態」にするにはどうしたらいいでしょうか?
chromeで、contenteditableな領域でIMEオンのまま他のbuttonをクリックすると、
フォーカスは外れるのですが、そのままキー入力をすると、
contenteditable領域にキー入力が送られてしまいます
buttonではなくbodyなどをクリックすることでblurした場合は、そのようなことはありません
バグだと思いますが、buttonクリックでは「半blur」のような状態になるのです
なので完全にblurしたいのですが、スクリプトにより要素でblurを発行しても、完全blurにはなりません
完ブラするにはどうしたらいいでしょうか

878 :Name_Not_Found:2014/05/25(日) 16:26:24.74 ID:???.net
はっと思いつき、
input textにフォーカスを移し、すぐにblurする、
というウルテクで完ブラすることが出来ました\(^o^)/
contenteditableという十分に枯れてないコンポーネントでのみ起きる現象だったので。

879 :Name_Not_Found:2014/05/26(月) 04:10:53.13 ID:???.net
>>872
そういうものがあったのですね
調べてみます
ありがとうございました

880 :Name_Not_Found:2014/05/26(月) 11:55:57.10 ID:mCA2gxiP.net
>>822-
わすれちゃいけないのが関数定義はブロックスコープだということ

>>875
それは拡張用であって特別なパーミッションが必要
標準APIは
new Notification('title', {body: 'body'})
これもパーミッションが必要

881 :Name_Not_Found:2014/05/26(月) 12:47:07.25 ID:???.net
> わすれちゃいけないのが関数定義はブロックスコープだということ
それがどうかしたの?

882 :Name_Not_Found:2014/05/26(月) 13:16:42.37 ID:???.net
変数もブロックスコープじゃん

883 :Name_Not_Found:2014/05/26(月) 14:10:23.44 ID:???.net
いや、全て関数スコープだと思うが…
ブロックスコープはES6になるまで存在しない

884 :Name_Not_Found:2014/05/26(月) 14:16:23.31 ID:???.net
だよな

885 :Name_Not_Found:2014/05/26(月) 15:46:05.85 ID:???.net
テキストをスマホでタップした時に選択状態にしたいんですが、

<input type="text" ontouchstart="this.select();">


↑このように書いても選択されません。
何かアドバイスくださいお願いします。

886 :Name_Not_Found:2014/05/26(月) 16:57:15.21 ID:???.net
ontouchstart を click にする。

887 :Name_Not_Found:2014/05/26(月) 18:28:44.95 ID:???.net
>>883
ブロック中の関数宣言はES5までは仕様外でブラウザの独自実装
ブロックスコープか関数スコープかはブラウザによる
例えばChromeはブロックスコープ、Firefoxは関数スコープ
ただしES6ではブロックスコープになったのでこれからはそれに統一される
またそれに先立ってES5のstrict modeでは明示的に禁止されてる
あとES5まででもtry-catch(e)のcatch節中のeはブロックスコープになる

function test() {
var F = function () { return 'OK' }
if (true) { function F() { return 'NG' } }
return F
}

test()()

888 :Name_Not_Found:2014/05/26(月) 19:36:43.17 ID:???.net
>>887
ブラウザの独自拡張を当然の動作であるかのように「関数定義はブロックスコープ」や「変数もブロックスコープ」と主張するのは違うと思ったのでES5仕様に則り、「全て関数スコープ」とした
「ES5では」と書かなかったのは反省してる

ところで、「ES6ではブロックスコープになった」のは知らなかった
まともな実装ならブロック内で関数宣言しないと思うが、コードによっては大きな影響がありそうだな

889 :Name_Not_Found:2014/05/26(月) 19:45:04.77 ID:???.net
>>887
だからなんなんだよ?

ブロックスコープで関数宣言するってはない誰もしてないだろ。

関数スコープで関数宣言するのなら、
動的なものでもない限り、静的に関数宣言、つまり
var func = function () {・・・} よりも
function func() {・・・} の方がふさわしいって話を
みんなしてるんだが。

function文とfunction式の違い、式である必要がないなら
function文を使いましょう。

890 :Name_Not_Found:2014/05/26(月) 19:47:42.40 ID:???.net
ん? まさか { }でくくられたものは全て
ブロックコープだって思ってないか?


function foo() {
 function bar() {・・・} // ← ここはブロックスコープではない。

 if (・・・) {
  // こことかがブロックスコープ
 }
}

891 :Name_Not_Found:2014/05/26(月) 19:56:45.54 ID:???.net
うーん、なんか主張が噛み合ってないね。関数スコープってのは逆に言えばブロック中に書いても滲み出るものであって、
そもそもブロック中に置けないのなら関数だってブロックなんだから、むしろブロックスコープだという方が一般的な言葉の印象として正しいと思うけどな。

まあそれはブロックスコープより関数スコープが「基本」だと思ってるからだろう。そこが咬み合わない原因かもしれない。
ブロックスコープが「基本」で関数スコープが第二の面白いスコープだと思えば、関数直下にしかない状況でわざわざ関数スコープを優先的に先に考えるのは変だと気付く

ES6からはブロックスコープだがES5までは関数スコープだったとわざわざ言うとまるでブロック文中に書いたときの挙動が変わったように思える。
だが実際の実装ではまさにそうなってるんだから、むしろ関数スコープだったと言えるのは、ES5というより実際の実装の方ではないだろうか?

892 :883,888:2014/05/26(月) 20:00:04.53 ID:AQkGHY9b.net
何を怒っているのかわからんが、俺は参考になったので>>887には感謝してる

893 :Name_Not_Found:2014/05/26(月) 20:01:48.87 ID:???.net
ここは質問者の答えは出るけど
その後よくわからんJavascript勉強会が始まる

894 :883,888:2014/05/26(月) 20:12:09.21 ID:AQkGHY9b.net
>>891
文脈からすると俺に対するレスであってるだろうか
出来れば、レスアンカーを付けてくれるとありがたい
(一応いっておくが、>889-890は俺じゃない)

> ES6からはブロックスコープだがES5までは関数スコープだったとわざわざ言うとまるでブロック文中に書いたときの挙動が変わったように思える。
そのように理解してる
あなたが主張する ES6 のブロックスコープは残念ながら裏が取れていないのだが、
ES5 では try-catch を除いて関数スコープなので>>837では "OK" が返り、ES6では "NG" になるはず
事実、Google Chrome 34 では "NG" が返る

895 :Name_Not_Found:2014/05/26(月) 20:14:18.98 ID:???.net
>>891
お前が馬鹿なだけじゃね?

そもそも関数スコープとブロックスコープの違いを知らなかっただろ?
それを無理やり「俺は知ってた」みたいにこじつけるのやめとけよ。

896 :Name_Not_Found:2014/05/26(月) 20:21:37.09 ID:???.net
>>891
Firefoxの独自拡張をES5標準と勘違いしているのでは?
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions_and_function_scope#Conditionally_defining_a_function
http://nanto.asablo.jp/blog/2005/12/10/

897 :Name_Not_Found:2014/05/26(月) 20:24:21.76 ID:???.net
>>891
お前何いってんの? ECMAScriptの仕様調べないで、自分の定義から
仕様を推測するとかアホなことやってんの? お前の印象なんかどうでもよくて、
ブロックスコープと関数スコープのどちらが基本とか関係なくて、

単に仕様では「ES5までは関数スコープしか存在しなかった」という事実でしか無いだろ。
実装がどうとかそんなの関係なく関数スコープしかなかったの。それがECMASCriptの一般的な言葉。

で関数定義はブロックスコープで行った場合の挙動は実装依存だが、
関数スコープで行った場合の挙動は明確で使用することに何の問題もない。

898 :Name_Not_Found:2014/05/26(月) 20:28:44.42 ID:???.net
ES5において、スコープは
グローバルスコープ と 関数スコープしか無い。
関数の中にあるものは関数スコープで、そうでないものはグローバルスコープ

ES6では新たにブロックスコープができた。
ブロックスコープとは関数スコープの中でブロックを作った時に出来るスコープで、
そのスコープ内でのみ存在する変数はletを使って定義する。
letを使わない限り変数は関数スコープとなり、ブロックスコープはオプションと考えられる。

899 :Name_Not_Found:2014/05/26(月) 20:33:03.85 ID:???.net
>>898
>ブロックスコープとは関数スコープの中でブロックを作った時に出来るスコープ

グローバルスコープの中では、ブロックスコープはできないってこと?

900 :Name_Not_Found:2014/05/26(月) 20:33:15.39 ID:???.net
ES6でスコープのデフォルトがブロックスコープに変わったとか
そういうことが起きたわけじゃない。

従来通りのコードを書けばES5のとおり関数スコープ(関数の中でなければグローバルスコープ)
それが互換性というものなのだから当然。

そこに新たにブロックスコープという概念が追加された。だがそれは追加機能であり
letを使わないとそのスコープは利用されない。

901 :Name_Not_Found:2014/05/26(月) 20:34:57.29 ID:???.net
>>899
めんどくせぇやつだな。
関数直下以外はブロックスコープだよ。

関数スコープはなくなったわけじゃないし、
letを使わない限り、関数スコープ。

ES5では関数スコープしかなくて、
ES6で新たにブロックスコープという概念が追加されたの。

902 :Name_Not_Found:2014/05/26(月) 20:37:58.19 ID:???.net
>>898
> letを使わない限り変数は関数スコープとなり、ブロックスコープはオプションと考えられる。
お手すきであれば教えて頂きたいのですが、>>887の「if文内での関数宣言がブロックスコープ」はES6にはない仕様で合ってるでしょうか
http://people.mozilla.org/~jorendorff/es6-draft.html から該当仕様を探そうとしていますが、見つけることが出来ず
自分の読解力がないだけなのか、本当に存在しないのか判断出来ませんでした

903 :Name_Not_Found:2014/05/26(月) 20:41:59.11 ID:???.net
>>902
はいそうです。

関数定義はブロックでやってはいけません。

そもそも、動的に定義する必要がないものは静的に定義するのが良いコードなので、
関数定義は(必要がない限り)function文で行うものです。function式で行うべきじゃありません。

ifなどのブロックは実行時に処理されるかどうか決まるので本質的に動的です。
だから静的に行うべき関数定義は、静的に、ゆえに関数スコープでやるべきなのです。

904 :887:2014/05/26(月) 20:48:41.12 ID:???.net
>>889-890
変数がどんなスコープになるかは場所で決まるんじゃなく、宣言によって決まってる
「ここは〜スコープ」という言い方はない。「この宣言だと〜スコープ」となる
結果的にスコープがどうなるかで、このケースは〜スコープと言ってるわけではなく
この宣言はどんなスコープになる種類なのかを話している

>>891
確かに同じことの言い回しの問題かもしれない

>>894
びっくりして試してみたが初期設定のCh35(現在の安定版)では"OK"が帰った
そしてES6なら(ブロックスコープ)なら"OK"が帰る

すまないが返信はまた明日の朝する

905 :902:2014/05/26(月) 20:53:45.60 ID:???.net
>>903
ありがとうございます。おかげ様ですっきりしました
私はif文内で関数を生成するなら関数式を使うのが自然だと思うので、ES6でもそのようにします

ところで、ES6 では let 以外は関数スコープとの事でしたが、const もブロックスコープではなかったでしょうか

あと、細かいことで恐縮ですが、あなたの仰る「関数定義」は「関数宣言」ではないでしょうか
ES6における関数定義は関数式を含むので文章通りに受け取るとおかしなことになってしまいます
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-function-definitions

906 :Name_Not_Found:2014/05/26(月) 20:56:12.88 ID:???.net
いや、スコープは場所で決まるんだよ。

ただし、ブロックスコープで有効な変数は
letを使うってだけ。

letを使った所がブロックスコープになるのではない。

907 :Name_Not_Found:2014/05/26(月) 20:57:52.72 ID:???.net
>>905
> 私はif文内で関数を生成するなら

いや、そういう区別の仕方はおかしいでしょw

動的に関数を生成するかどうかで決めるのが正しい。
動的に関数を定義するのは、定義するタイミングが動的になってしまう。

これは静的に決まることよりもコードのメンテナンス性という意味で
悪くなってる。

908 :Name_Not_Found:2014/05/26(月) 20:58:36.45 ID:???.net
>>905
> あと、細かいことで恐縮ですが、あなたの仰る「関数定義」は「関数宣言」ではないでしょうか
宣言と定義が明確に区別されているのは、
C言語ぐらいなので、それはどうでもいいこと。

909 :Name_Not_Found:2014/05/26(月) 21:05:16.18 ID:???.net
おまえらいいかげん他でやれよ

910 :Name_Not_Found:2014/05/26(月) 21:09:59.85 ID:???.net
真面目な会話と横槍の温度差が激しい

911 :Name_Not_Found:2014/05/26(月) 21:18:42.82 ID:???.net
無名関数を直接引数にするとき以外で
ifの中で関数を生成するってあまりないなぁ。

912 :Name_Not_Found:2014/05/26(月) 22:22:56.23 ID:???.net
仕様の話と主観的な意見が入り混じっていて何だかなあ

913 :Name_Not_Found:2014/05/26(月) 22:37:49.43 ID:???.net
仕様の話なら、仕様見れで終わるわけで、
掲示板を使う理由がないんだがw

914 :Name_Not_Found:2014/05/26(月) 23:03:31.95 ID:???.net
画像を読み込むときに何%読み込み完了したか表示してるサイトとかたまにみますけど
あれはどうやってるんですか?

915 :Name_Not_Found:2014/05/26(月) 23:45:15.83 ID:???.net
しかし代替手段のないletを平気で使えるようになるのは3年は待たないと駄目だろうね

>>914
XMLHttpRequest progressイベント でggr

916 :Name_Not_Found:2014/05/27(火) 01:53:35.43 ID:???.net
変数のスコープなんて考えを使ってるから、
セキュリティホールを作り込むんだよ。
全部グローバルにすればいい。
昔の堅牢なシステムは全部それで上手くいってた。

917 :Name_Not_Found:2014/05/27(火) 02:14:27.39 ID:???.net
>>916
それどんなFortranだよ

918 :Name_Not_Found:2014/05/27(火) 02:35:27.41 ID:DGzKVkqL.net
すみません、質問です
iframeに別ドメインのページを読み込ませると、その中で動いているjqueryがエラーを頻発し
IE8でjs警告メッセージがでてきます
(例えば、$(div).〜と書いてるのがエラーになり、jQuery(div).〜に書き直したら収まるような妙なエラー)
しかし、同じページをiframeでなく直接開くとそのエラーは出ないという状況です

これは何が原因でしょうか
iframeで開く時に何か気をつけないといけないことがあるんでしょうか

919 :Name_Not_Found:2014/05/27(火) 07:22:47.52 ID:???.net
lodashで単純なforループをするにはどうしたらいいんですか?

920 :Name_Not_Found:2014/05/27(火) 08:10:04.49 ID:???.net
前の方でfunctionの問題が出ていますが
コンストラクタ定義をfunctionでして、そのprototype定義をその後ろでしていたとします
コンストラクタの前でnewしたら、
既にfunctionは定義されているのでインスタンスは生成できますが、
プロトタイプは設定されていないのでおかしくなります
function定義と同じタイミングでプロトタイプも定義する方法はありますか?

921 :Name_Not_Found:2014/05/27(火) 08:26:08.98 ID:???.net
コンストラクタだけが出来て変になるのを防ぐために
function定義はやめた方がいいってことですよね?
はい論破

922 :Name_Not_Found:2014/05/27(火) 10:24:36.93 ID:???.net
変になるのを防ぐってwwwww
せめて日本語を勉強してから論破しろよ

923 :Name_Not_Found:2014/05/27(火) 10:37:30.63 ID:???.net
じゃあお前不完全なオブジェクト出来ていいのかよ

924 :Name_Not_Found:2014/05/27(火) 11:17:07.12 ID:???.net
相当>>780のことを根に持ってるようだね

925 :Name_Not_Found:2014/05/27(火) 11:18:44.08 ID:???.net
>>920
よくわからんけど、つまりこういうこと?
変数に関数を代入するやり方では防ぎようがないね。

var Klass = function () {・・・} // コンストラクタ

↑前の方

ここでインスタンス生成

↓後ろ

Klass.prototype.foo = function () {・・・}

926 :Name_Not_Found:2014/05/27(火) 11:27:02.44 ID:???.net
>>920
解決策ではないが、
new が実行される前に その function の prototype を freeze しとけば
おかしなことになる前にエラーを吐き出してくれる様になるんではないか

927 :Name_Not_Found:2014/05/27(火) 11:28:45.59 ID:???.net
>>920
> コンストラクタ定義をfunctionでして、そのprototype定義をその後ろでしていたとします
> コンストラクタの前でnewしたら、
> 既にfunctionは定義されているのでインスタンスは生成できますが、
> プロトタイプは設定されていないのでおかしくなります

図解しようか?

var klass = new Klass(); // 問題なく動く。(newの中でfooを使っていないならば) なおプロトタイプは後から設定してもよい
function Klass() {・・・} // コンストラクタ
Klass.prototype.foo = function () {・・・}

↓こっちはもっとひどい。

var klass1 = new Klass(); // エラーで落ちる。
var Klass = function () {・・・} // コンストラクタ
var klass2 = new Klass(); // newの中でfooを使っているとどっちみち落ちる。
Klass.prototype.foo = function () {・・・}

928 :Name_Not_Found:2014/05/27(火) 11:34:24.70 ID:???.net
根本的な所で考え方が違っているんだよな


たとえばこういうコード


var a = foo();

function foo() { return 1 }


動くべきか、そうでないか。

929 :Name_Not_Found:2014/05/27(火) 11:54:26.99 ID:???.net
動いちゃうんですねコレ。知らなかった。
jsファイルがパースされた時点でfooが有効になっていて、
実行時点で利用可能って解釈で合ってる?

930 :Name_Not_Found:2014/05/27(火) 11:58:47.22 ID:???.net
C言語とかでは動かなくて
前方参照するために、プロトタイプ宣言とかいう
機能が必要になってしまう。

これを不要にした最初の言語は
Javaだろう。すごいね。

931 :Name_Not_Found:2014/05/27(火) 12:07:23.26 ID:???.net
>>925
中途半端に動かなくするのが重要なんだよ
エラーは早い段階で出すようにするのがセオリー

932 :Name_Not_Found:2014/05/27(火) 12:08:41.67 ID:???.net
>>929
むしろ、なぜ動かないと思ったの?

933 :Name_Not_Found:2014/05/27(火) 12:09:46.29 ID:???.net
異常がある時
「オブジェクトが生成でき、メソッドを使うまで異常に気付かない」
より
「オブジェクトが生成できない」
の方がいい
それがA級プログラマーの発想

934 :Name_Not_Found:2014/05/27(火) 12:18:12.47 ID:???.net
>>906
お前さんの言いたいことは分かったが、>>904の一段落をよく読んでくれ
結果的な「スコープ」がどうなるかとか、「スコープ」自体の配置の話ではなく、
宣言によってその変数がどういうスコープに属するのかということで、
この宣言では〜スコープという言い方をしている
この「場所」がスコープになると言っているわけではない

935 :Name_Not_Found:2014/05/27(火) 13:03:33.34 ID:???.net
JSはメソッドをすげ替えて呼ぶこともできるんだから、どちらにせよメソッド側のチェックも必要。
コンストラクタでは、thisが確実にクラスのインスタンスであり、未初期化なオブジェクトであることを確認して初期化する。
メソッドではthisが確実にクラスのインスタンスであり、初期化済みのオブジェクトであることを確認して扱う。
これが鉄則で、ビルドインAPIでも使われている手法。

936 :Name_Not_Found:2014/05/27(火) 13:37:54.80 ID:???.net
そんな面倒くさいチェック普通しないだろ

937 :Name_Not_Found:2014/05/27(火) 13:59:12.48 ID:???.net
というか適切なprototypeを持っているかどうかってどうやってチェックできるの?

938 :Name_Not_Found:2014/05/27(火) 14:59:14.30 ID:???.net
こんな感じになるはず

// lib/private.js
export default const $ = (map => base => {
 let priv = map.get(base)
 if (!priv) map.set(base, priv = {__proto__: null})
 return priv
})(new WeakMap)
〜〜〜〜〜〜

// main.js
import {ASSERT, UTIL} from 'lib/helpers'
import ル from 'lib/private'
const {$$crate} = Symbol

const Person = UTIL.CLASS_FREEZE(class {
 [$$create]() {
  let U = undefined・
  return Object.assign(ル(super()), {PersonName:U})
 }
 constructor(name) {
  ASSERT.UNINITIALIZED(ル(this), ['PersonName']) // has && undefined
  ASSERT.TYPEOF(name, 'srting', {minLength:1, maxLength:100})
  ル(this).PersonName = name
 }
 getName() {
  ASSERT.INITIALIZED(ル(this), ['PersonName']) // has && !undefined
  return ル(this).PersonName
 }
})

939 :Name_Not_Found:2014/05/27(火) 16:24:54.09 ID:???.net
機種依存文字やめろや

940 :Name_Not_Found:2014/05/27(火) 17:41:35.62 ID:zsvIvzaH.net
あるページのボタンでCGIなどからの出力を読み込み、
それのみを印刷できるようにプログラムを作っています。

現在はiframeにページを読み込み、その内容を印刷できるようにコード書いています。
frames[frameName].focus();
frames[frameName].print();

動作そのものは問題ないのですが、IEにおいては縮小されて印刷されてしまい困っています。
親ページのメイン部分にwidthの指定があると(中央寄せのレイアウトなど)
そうなるようです。(IE10でテスト、11未確認)
またfloatなどの影響も受けているようです。
(これらをすべてはずすと縮小されず印刷される)

上記のような印刷のための他の方法は考えられるでしょうか?
どの道フレームを使うしかない気もするんですが・・・

941 :Name_Not_Found:2014/05/27(火) 17:50:55.13 ID:???.net
印刷用CSSを指定してみれば?

942 :東日本大震災:2014/05/27(火) 19:03:25.53 ID:???.net
これねー誰もおらん所で言うのでれむじー。

横綱渡り
剛君が横に出たー?とか

横綱に志賀剛君が出てきた所とか。
お頂いで横綱に食べに行ってるはず。

知らんなら知らんて言ってー。
お前うっとうしーよーいい加減ていうか俺今水男だよーとか

四日市と春日井市の間で車を追い抜いた所。
今の気持ちを大切にね。

かっこいいのになー。
なんでだろうなー。

ネクタイの縛り方

連舞と乱舞
しっしっしっしっしっしっしっし。

俺たち記憶の倉庫ばーん。
僕も中島って言うだよ。

あ、僕の1UPきのこが。
なんでねー俺がお前の疲れ取り?
えー自分で自分の首を絞めてる事に早く気づきましょう。

で、僕が一応ファイナルスターの

943 :Name_Not_Found:2014/05/27(火) 22:06:25.82 ID:zsvIvzaH.net
>>941 ありがとうございます。意識して試してみたのですが変化ありませんでした。

もう少し状況が見えてきたので再現するコードを用意しました。
最終的にJS関係うすいけど見てみてください。
[ b.html ]
<html><body>
<div style="width:500px"><button id="go-print">印刷</button></div>
<iframe name="print-content" src="c.html"></iframe>
<script>
document.getElementById("go-print").addEventListener("click", function(e){
frames["print-content"].focus(); // IEで必要
frames["print-content"].print();
});
</script>
</body></html>

[ c.html ]
<html><body>Hello</body></html>

ボタンクリックでiframeの内容が正常に印刷されます。
ところがb.htmlのdiv要素のwidthを1000pxに広げると縮小印刷されてしまいます(IE10)
因果関係がつかめません・・・

944 :Name_Not_Found:2014/05/27(火) 22:13:07.87 ID:zsvIvzaH.net
追記
上記b.htmlのようにページの大枠となるような要素のwidth指定に
離れた場所のiframeの印刷結果が影響される感じです。
例えば<div><div style="width:1000px"></div></div>のように
width指定なしの要素と入れ子にしても変わりません。

945 :943:2014/05/27(火) 23:21:43.21 ID:zsvIvzaH.net
自分ちで2ちゃんできないので今日いったんこれで上がります。
IE10の他の環境でも再現すれば、他の方法を考えたいと思っているので
試してもらえるとありがたいです。
現時点ではプリンタの問題とゆう可能性も捨てきれず、曖昧な状態なので・・・

一応こちらではこの後 window.open()でのコードを作って
試してみようと思ってますm(_ _)m

946 :Name_Not_Found:2014/05/28(水) 00:05:52.21 ID:???.net
スタイルシートをmedia="all"とmedia="print"の2つにしてprint側のdivの幅をautoにする

947 :Name_Not_Found:2014/05/28(水) 02:27:46.91 ID:???.net
>>945
floatがclearfixされてないとか、css由来の問題だろうね。
印刷プレビューの時点でおかしいの?

948 :Name_Not_Found:2014/05/28(水) 03:57:45.93 ID:???.net
iframe側のc.htmlが、本体であるb.htmlのCSSに影響を受けるの?

b.html, c.htmlのCSSを、各b.css, c.cssとすると、
c.htmlのデザインは、c.cssに書けばよいと思う

949 :Name_Not_Found:2014/05/28(水) 06:54:11.10 ID:???.net
あるイベントで絶対に実行させたい処理があるときはどうしたらいいですか?
イベント伝播の最上位のdocumentで処理すれば一応できそうですが
その前にstopPropagationされたら止まりますよね?

950 :Name_Not_Found:2014/05/28(水) 08:16:21.33 ID:???.net
>>949
絶対は不可能です

951 :Name_Not_Found:2014/05/28(水) 08:32:01.00 ID:???.net
>>949
キャプチャフェイズを使う

952 :Name_Not_Found:2014/05/28(水) 08:40:34.73 ID:???.net
>>949
removeEventListener、addEventListnerの書き換え、JavaScriptの無効化
考え出したらきりがない
(ある程度の)完全性を保証するならイベントは諦めてサーバサイドで完結するプログラムで再構築するしかない

953 :Name_Not_Found:2014/05/28(水) 08:55:43.31 ID:???.net
次スレは975超えたらね。

954 :Name_Not_Found:2014/05/28(水) 09:10:45.76 ID:???.net
何故そう揚げ足とったような返ししかできないのか

955 :943:2014/05/28(水) 10:35:58.19 ID:by9DvGoZ.net
>>946-948
レスありがとうございます。
基本認識としましては、親ページ(b.html)のCSSは子ページ(c.html)には継承されません。
「縮小印刷されてしまう」は、プリンタの「自動的に縮小して画面全体を印刷する」的な機能で
調整されてしまうようなニュアンスでした。
そこで昨夜あれから、以下のように仮定してテストをしました。
一応うまくいった感じなので、この線で進めてみようと思っています。

※仮定(プリンタの用紙設定は大抵デフォルトになってるA4サイズとする)
・幅500pxの「親ページを」印刷する場合、プリンタの自動縮小機能は必要ない
・幅1000pxの場合、自動縮小が機能して範囲内に収めようとする、
・IEにおいては、iframeに読み込まれたページが、親ページですでに(?)認識されてる
 印刷範囲情報のようなものを受け継いでしまう
 =>ゆえに親ページの幅が広いと子ページも縮小印刷されてしまう

※コード(荒いですがシンプルに・・・)
[ b.html ]
<html><head>

<style>
/*プリンタの自動縮小が機能する画面幅(A4用紙)*/
/*通常のページ印刷の場合もこのサイズで印刷*/
@media all { #container { width:1000px; } }
</style>

<style disabled>
/*プリンタの自動縮小が必要ない画面幅(A4用紙)*/
/*無効化しておきiframe印刷時のみ有効にする*/
@media print { #container { width:500px; } }
</style>
</head>(続く)

956 :943:2014/05/28(水) 10:36:34.82 ID:by9DvGoZ.net
(続)<body>
<div id="container"><button id="go-print">印刷</button></div>
<iframe name="print-content" src="c.html"></iframe>
<script>
// iframe印刷(IEのみ親ページの印刷用CSSを変更してから印刷する(IE判別コード略))
document.getElementById("go-print").addEventListener("click", function(e){
document.styleSheets[1].disabled = false; // styleの有効化
frames["print-content"].focus(); // IEで必要
frames["print-content"].print();
});
</script>
</body></html>

[ c.html ]
<html><body>Hello</body></html>

957 :943:2014/05/28(水) 10:40:31.78 ID:by9DvGoZ.net
>>955-956>>946の方法ですね・・・
印刷用CSSのwidthをautoに変えてみたら、こちらもうまくいきました。
autoの方が用紙サイズに左右されないので良さそうです!
ありがとうございました。

958 :Name_Not_Found:2014/05/29(木) 04:48:41.14 ID:???.net
JavaScriptでテーブルを作成する時ってどうやるのが一番いいですか?
jqueryありでお願いします

959 :Name_Not_Found:2014/05/29(木) 05:26:13.41 ID:???.net
ちなみにメソッドチェーンでオブジェクト指向的に作りたいです
appendHeaderとかappendRowとかを発行して組み立てていくイメージです

960 :Name_Not_Found:2014/05/29(木) 08:43:07.97 ID:???.net
>>958-959
JavaScript ライブラリ総合質問所 vol.4
http://peace.2ch.net/test/read.cgi/hp/1400834117/

961 :Name_Not_Found:2014/05/29(木) 11:08:59.40 ID:???.net
むしろ自分でどう書くか系なのでライブラリではありません

962 :Name_Not_Found:2014/05/29(木) 12:13:46.12 ID:???.net
>>958
> JavaScriptでテーブルを作成する時ってどうやるのが一番いいですか?
> jqueryありでお願いします

冗談みたいに思うかもしれんがこれ。
$('<table><tr><td></td></tr></table>')

もちろん動的にtrやtdを書き換える必要があるなら別のやり方をするけど
単にテーブルを作るだけならこれが一番良い

HTMLに属性やテキストをいれこみたいなら、テンプレートの出番。
lodashにテンプレート機能があるからそれを使う。

コードにHTMLを書いちゃいかんと思うかもしれないが、
DOMを作成するときのコードで一番わかり易いのはどれ?で
考えると実はHTMLそのものなんだよ。

963 :Name_Not_Found:2014/05/29(木) 12:29:55.16 ID:???.net
なるほど
テンプレートは考えてませんでした
ありがとうございました

964 :Name_Not_Found:2014/05/29(木) 17:45:01.93 ID:???.net
type="text/javascript" charset="utf8"
はあった方がいいんですか?

965 :Name_Not_Found:2014/05/29(木) 18:57:36.96 ID:???.net
>>964
HTML5ならtype属性のデフォルトはtext/javascript
Content-Typeヘッダを出力するならcharset属性は不要

966 :Name_Not_Found:2014/05/29(木) 19:23:14.20 ID:???.net
>>958
jQueryに頼らなくてもぶっこむだけなら↓でいいじゃん
document.body.innerHTML = '<table><tr><td>りんご</td><td>みかん</td></tr></table>';

967 :Name_Not_Found:2014/05/29(木) 19:42:18.00 ID:???.net
innerHTMLは使うな

968 :Name_Not_Found:2014/05/29(木) 19:43:03.49 ID:???.net
innerHTMLを使うとtypeバトラーの人とかあごっちに怒られるぞ

969 :Name_Not_Found:2014/05/29(木) 19:43:48.28 ID:???.net
eval使え

970 :Name_Not_Found:2014/05/29(木) 20:09:47.77 ID:???.net
まーたinnerHTML使うな厨か
それ単なる思考停止だから

971 :Name_Not_Found:2014/05/29(木) 20:11:43.71 ID:???.net
>>958
jQuery と DOM API は共存可能
http://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/HTML/HTMLTableElement.html

>>966
tbody要素がないとかsummary属性がないとか...
(innerHTMLはせっかくHTMLパーサを通しているのに仕様違反に対してエラーも警告も出さないんだよね)

972 :Name_Not_Found:2014/05/29(木) 20:19:49.63 ID:???.net
> tbody要素がないとか
省略可能

> summary属性がないとか...
廃止

いい加減、HTML5勉強しろよ。
使わないものまで要求されていた
XHTMLの時代は終わったんだぜ?

973 :Name_Not_Found:2014/05/29(木) 20:36:47.55 ID:???.net
今はここまでやっても、正しいHTMLだからな。

<table><tr><td>りんご<td>みかん</table>

リストとかこれでいい。

<ul>
 <li>a
 <li>b
 <li>c
</ul>

更に言うなら、省略した方が余計な空白が入らない。
<ul>
    <li>a</li> (余計な
空白) <li>b</li> (余計な
空白) <li>c</li> (余計な
空白)
</ul>

この余計な空白によって変なスペースが現れることがあるんだよね。

974 :Name_Not_Found:2014/05/29(木) 21:32:24.71 ID:???.net
>>973
それってブラウザ間の振る舞いで解釈が異なることって無いの?
厳密に仕様になってるの?

975 :Name_Not_Found:2014/05/29(木) 21:48:43.30 ID:???.net
>>974
HTML5を勉強しろよ。

HTML5対応、つまり最近のブラウザは全て厳密な仕様になっている。
さらに不正なタグをどう解釈するかまで厳密な仕様になってる。

ブラウザが仕様を満たしている限り、間違った書き方を含めて
どんな書き方をしても、同じようレンダリングされる。

976 :Name_Not_Found:2014/05/29(木) 21:49:17.84 ID:???.net
訂正
×同じようレンダリングされる。
○同じよう解釈される。

977 :Name_Not_Found:2014/05/29(木) 21:51:14.65 ID:???.net
変なブラウザがないとも限らないから
一般的な書き方するのが一番いいだろ

978 :Name_Not_Found:2014/05/29(木) 21:54:04.27 ID:???.net
省略可能な事と実際に省略するかは別だけどね

if (a === 1) b = 2 // {} を省略可能

979 :Name_Not_Found:2014/05/29(木) 21:56:34.11 ID:???.net
>>977
変なブラウザは、一般的な書き方をしても
間違った解釈をするわけだから、言っていることに意味が無い。
通常は変なブラウザのことまで考える必要はない。

変なブラウザにぶち当たってから考えればいいことを
今考えてはいけない。

そして>>973は正しいHTMLであり、一般的な書き方をするというならば
これこそが一般的な書き方。

一般的な書き方を知らない無知な>>977
一般的じゃないと思い込んでるだけ。

980 :Name_Not_Found:2014/05/29(木) 21:57:16.65 ID:???.net
>>978
XHTMLで一旦省略不可能になった。

それが省略可能に差し戻しになったということは
省略可能な方が良いと判断されたから。

981 :Name_Not_Found:2014/05/29(木) 21:58:58.29 ID:???.net
>>980
あなたがそう思うのならそうなんだろうね

982 :Name_Not_Found:2014/05/29(木) 22:00:44.21 ID:???.net
>一般的な書き方をしても間違った解釈をする

はい詭弁
あまり使われない機能にバグが残るのは必然
一般的な書き方にバグが残りにくいのは当然の理

983 :Name_Not_Found:2014/05/29(木) 22:03:20.28 ID:???.net
HTML5は互換性のためにあえてルーズな書き方を許容しているだけだし、あえて省略して視認性を損ねる理由もないので俺は省略しない

984 :Name_Not_Found:2014/05/29(木) 22:13:50.75 ID:???.net
GoogleのHTMLガイドにも書いてるし、気にせず省略すればいいと思う
http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml?showone=Optional_Tags#Optional_Tags

XHTMLで省略できないのはXMLの整形式違反になるからであって、XHTML5なら当然省略できない

985 :Name_Not_Found:2014/05/29(木) 22:17:50.51 ID:???.net
>>984
Googleはスピード重視の技術者集団だからそのルールを参考にするのはどうかと思うが
省略すると保守性が低くなる

986 :Name_Not_Found:2014/05/29(木) 22:33:38.69 ID:???.net
省略できるタグは全て省略しろというのは極端だが、自明なタグは省略すればいい

先に書かれているが</li>なんかは省略せずに空白類文字の問題を解決しようとすると
<li>hoge
</li><li>hoge
</li>
とか
<li>hoge</li
><li>hoge</li
>
とか、これなら省略した方がスマート

<tbody>にしろ</li>にしろHTML5以前からずっと省略可能とされてるし何の心配もいらない

987 :Name_Not_Found:2014/05/29(木) 22:59:00.44 ID:???.net
>>977
一応プログラマなんだから変なブラウザとかあいまいな事言わずに調べろ
http://caniuse.com/html5semantic
ここ見るとHTML5の追加構文はOperaMini以外は全部サポートしている
省略に問題が無いかまでは分からんがHTML5の構文はもう全く問題無く使えるだろ
OperaMiniは当然シカト

988 :Name_Not_Found:2014/05/29(木) 23:11:56.71 ID:???.net
IE6使ってる奴がまだ5%くらいいるんだよなー

989 :Name_Not_Found:2014/05/29(木) 23:16:03.91 ID:???.net
彼が省略するのは勝手だが、この押し付けがましさは何とかならんのか

990 :Name_Not_Found:2014/05/29(木) 23:47:50.15 ID:???.net
>>970
よぉまっとうな反論もできないカス野郎

991 :Name_Not_Found:2014/05/29(木) 23:50:02.20 ID:???.net
ここはHTMLの話するスレじゃねえよ4ねカス共

992 :Name_Not_Found:2014/05/29(木) 23:56:44.28 ID:???.net
$('.parent').on({
'mouseenter': function(){...},
'mouseleave': function(){...}
}, '.foo');
これを$(document).onでやるには2回$(document).on(mouseenter) $(document).on(mouseleave)と書かなくっちゃダメなんでしょうか?

993 :Name_Not_Found:2014/05/30(金) 00:02:25.70 ID:???.net
onもメソッドチェーンできるみたいだから
$(document).on("mouseover",function(){}).on("mouseleave",function(){})

994 :Name_Not_Found:2014/05/30(金) 00:26:01.70 ID:z/9nF5hg.net
@
<!DOCTYPE html>
<html lang=“ja”>
<head>
<link rel=“stylesheet” href=“Sample.css”>
<title>サンプル</title>
</head>
<body>
<script type=“text/javascript”>
var d = new Data();
document.writeln(d);
</script>
</body>
</html>

995 :Name_Not_Found:2014/05/30(金) 00:26:45.91 ID:z/9nF5hg.net
A
body{
background-color: #000000;
color: #FFFFFF;
font-size: 2em;
font-family: fantasy;
}
#on{
background-color: #2e8b57;
color: #FFFFF0;
font-family: fantasy;
}
#off{
background-color: #000000;
color: #FFFFF0;
font-family: fantasy;
}

996 :Name_Not_Found:2014/05/30(金) 00:27:21.70 ID:z/9nF5hg.net
質問なんだけど@をSample.htmlAをSample.cssと名前をつけて同一フォルダ内に保存したんだけど動かない。
原因わかる人いない?

997 :Name_Not_Found:2014/05/30(金) 00:33:06.84 ID:???.net
>>993
on2回使うのがスッキリしませんが
onをこういう風に使えるとは知りませんでした!ありがとうございますこうします

998 :Name_Not_Found:2014/05/30(金) 00:52:09.96 ID:???.net
>>994のダブルクォーテーションが全角だからじゃないの

999 :Name_Not_Found:2014/05/30(金) 00:59:52.40 ID:z/9nF5hg.net
>>998
半角に変えてみましたがだめでした。。。

1000 :Name_Not_Found:2014/05/30(金) 01:05:44.82 ID:???.net
DataじゃなくてDate

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
262 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★