Name_Not_Found<>sage<>2014/05/03(土) 08:16:35.71 ID:???<> JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。
回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止ではありませんが、ライブラリスレで聞くとより回答を得やすいかもしれません。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。 <>+ JavaScript の質問用スレッド vol.115 +
Name_Not_Found<>sage<>2014/05/03(土) 08:17:42.43 ID:???<> ■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/ <>
Name_Not_Found<>sage<>2014/05/03(土) 08:18:54.92 ID:???<> ■前スレ
+ 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/ <>
Name_Not_Found<>sage<>2014/05/03(土) 08:20:05.80 ID:???<> ■主要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 中でやるとか。 <>
Name_Not_Found<>sage<>2014/05/03(土) 08:25:56.27 ID:???<> ■各種仕様 ( 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) <>
Name_Not_Found<>sage<>2014/05/03(土) 13:05:07.40 ID:???<> >>1Java乙cript <>
Name_Not_Found<>sage<>2014/05/03(土) 18:37:34.60 ID:???<> >>1乙
dom要素へのidの設定はsetAttributeを使うのとidプロパティへの代入と
どっちがいいんですか? <>
Name_Not_Found<>sage<>2014/05/03(土) 18:41:22.61 ID:???<> 関数の中で関数を定義している場合
親関数が呼ばれるたびに子関数は再定義されるのでしょうか? <>
Name_Not_Found<>sage<>2014/05/03(土) 19:37:18.88 ID:???<> onscrollハンドラが、スクリプトによるscrollでも反応します
しかし、タイミング的に反応して欲しくない時があります
一時的にハンドラを無効にするいい方法はないでしょうか? <>
Name_Not_Found<>sage<>2014/05/03(土) 20:04:19.03 ID:???<> >>9の件ですが、bindFirstプラグインで別のハンドラを上に登録し、そこでイベントをstopし、
反応してほしくない期間が終わったらその蓋ハンドラを削除するというウルテクを思いつき
うまくいきました
もっといい方法はあるでしょうか? <>
Name_Not_Found<>sage<>2014/05/03(土) 22:11:49.08 ID:???<> >>9
もっといいかどうかわからんが
その期間中ハンドラの中で条件分岐とか
removeEventListner+addEventListenerとか
別のハンドラでcapture+stopPropagationとか
これらの組み合わせなど
テクと言うほどでもない方法はある <>
Name_Not_Found<>sage<>2014/05/04(日) 01:22:05.96 ID:???<> コールバック関数を使ったプログラミングでは
後で実行されるコードを先に書いたりして、すごく見にくくなります
コールバック関数の中で更にコールバック関数を使ったりすると更にごちゃごちゃになります
見やすくする方法はないでしょうか? <>
Name_Not_Found<>sage<>2014/05/04(日) 02:32:26.41 ID:???<> ぼくもちょうどそれを質問しようとしたのでしりたいです
簡単なものは今までは↓の感じでやっていました
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 <>
Name_Not_Found<>sage<>2014/05/04(日) 11:44:26.93 ID:???<> >>12
あるよ。 「javascript 非同期ライブラリ」でぐぐれば
いろんな人が分かりやすく教えてくれてる。
>>13
君はまず、いいライブラリを使って見る必要があるね。
lodashとかピッタリだろう。
よく考えられて作られたライブラリは
どのような使い方をするのか勉強すれば
自分でも作れるようになるだろう。 <>
Name_Not_Found<>sage<>2014/05/04(日) 14:06:16.58 ID:???<> 前スレ >996
エスケープの意味がわからないが、一般的に、
人が入力するデータは、間違いが多いから、
入力チェックや訂正をする
>>8
再定義ってどういう意味?
>>9
イベントを処理しないのなら、
ハンドラの冒頭で、即リターンすれば? <>
Name_Not_Found<>sage<>2014/05/04(日) 14:14:29.58 ID:???<> 質問なのかよくわからないんですが
JavascriptやjQueryにオススメのテキストエディタってありますか? <>
Name_Not_Found<>sage<>2014/05/04(日) 15:07:08.14 ID:???<> どうみても質問です <>
Name_Not_Found<>sage<>2014/05/04(日) 15:30:54.14 ID:???<> 本当に <>
Name_Not_Found<>sage<>2014/05/04(日) 16:12:02.62 ID:???<> >>16
sublime text一択 <>
Name_Not_Found<>sage<>2014/05/04(日) 17:00:25.44 ID:???<> Win7 サクラエディタ、NotePad++
Win8 TeraPad
やっぱ、IDEじゃないと、プロパティなどの補完が効かない <>
16<>sage<>2014/05/04(日) 17:19:42.25 ID:???<> 個人的に「あれ?あの関数なんていったっけ?ti・・・ti・・・」→time()
って予測変換で教えてくれるのがあればいいなーって思ってます <>
Name_Not_Found<>sage<>2014/05/04(日) 17:47:20.05 ID:???<> 単語補完とかスニペットとかのキーワードでググると吉。 <>
Name_Not_Found<>sage<>2014/05/04(日) 18:21:49.38 ID:???<> sublime text2で出来る
B級以上のJavaScripterはみんな使ってるよ <>
16<>sage<>2014/05/04(日) 18:27:11.83 ID:???<> うおおおおsublimetextっての調べてみたらコレは凄い
これです、こんなの探してましたありがとうございます
これでフリーだなんて世の中凄いものがあるもんですね <>
Name_Not_Found<>sage<>2014/05/04(日) 18:40:38.96 ID:???<> IE6-11
Fire最新
Google最新
で動作する
文字サイズを変更した時のイベントをキャッチしてアラートだしたいのだがリファレンス見ても文字サイズ変更のイベントがのっとらん
このままでは
非表示のテキスト入りオブジェクトをクリエイトしたのち
セットタイムアウトで関数を何度も呼び出してして要素の高さが変わったらアラート
と言うことをしなければならない
なんかセットタイムアウトを使わない良い方法あるか?
もちろんセットインターバルもなしで <>
Name_Not_Found<>sage<>2014/05/04(日) 19:00:42.56 ID:???<> そんなイベント聞いたことないな
多分ないよ <>
Name_Not_Found<>sage<>2014/05/04(日) 19:12:36.89 ID:???<> 配列で返ってきた返り値を直接スカラー変数に代入することはどうやってもできないでしょうか?
ES6では出きるそうですが、ES3で。
見通しが悪くなるから一時変数は減らしたいんですよね〜
関数言語的アプローチもそういうところから来てるんですかね <>
Name_Not_Found<>sage<>2014/05/04(日) 19:19:46.22 ID:???<> PCが時間とともに進化していくのは必然
ということはあらゆるコードは自動的に高速化していくということ
だとするならば、筋のいいコードとは、見やすく保守性の高いコードではないだろうか?
むろん何度も深いスコープの変数にアクセスするよりは、一度ローカル変数に代入した方が
見やすく保守性もあがるので、ローカル変数に代入するという方針は基本的には正しいが、
速度面で避けていた関数言語的アプローチも、保守性の面からは採用すべきかもしれない。 <>
Name_Not_Found<>sage<>2014/05/04(日) 19:35:48.73 ID:???<> >>26
やっぱ無いのかー <>
Name_Not_Found<>sage<>2014/05/04(日) 22:25:12.96 ID:???<> >>16
http://webcre8.jp/use/software-editor-brackets.html <>
Name_Not_Found<>sage<>2014/05/04(日) 22:36:46.20 ID:???<> ブラケットって少し前にこのスレに話題になった時に試したけど
sublimeをパクろうとして失敗したくそエディターじゃん
今はマシになったの? <>
Name_Not_Found<>sage<>2014/05/04(日) 23:51:45.61 ID:???<> >>25
iframe in フレームのスクロール変化でどや?! <>
Name_Not_Found<>sage<>2014/05/05(月) 00:48:56.54 ID:???<> setTimeoutで呼ばれた関数の中から
またsetTimeoutで同じ関数を呼ぶ
ということを繰り返したら、スタックは増加しますか?
setTimeoutで遅れて呼ぶので、スタックの増加はないと思っていたのですが
妙なかくつきがあり、もしかしてスタックが積まれすぎてるせいでは?と思ったのです <>
Name_Not_Found<>sage<>2014/05/05(月) 01:15:37.07 ID:???<> >>33
setTimeout自体は何も評価せずスケジュールだけ組んで即時に戻るから
コールスタックは積まれない
かくつきは一般的にそのスケジュールが
何か他の処理よりも後回しにされている
または他の処理にブロックされていることを意味する <>
Name_Not_Found<>sage<>2014/05/05(月) 01:20:57.53 ID:???<> >>34
やっぱり積まれませんよね
ありがとうございます <>
Name_Not_Found<>sage<>2014/05/05(月) 05:44:20.63 ID:???<> >>32
フレームか
JSで扱ったこと無いわ
ちょっとググってみる
ありがと <>
Name_Not_Found<>sage<>2014/05/05(月) 11:25:50.14 ID:???<> >>28
たしかにそうかも
LEGACY用の処理とか、無駄なのがいつまでも残ってたりするし
いまだに//NN4とかw <>
Name_Not_Found<>sage<>2014/05/05(月) 14:23:12.98 ID:???<> ???
古い時代に書いたコードの話とは関係ないんだが
むしろ、そういうのを一々正すほうが無駄だろ
お前は過去に書いたコードを永久にサポートできるのか?
それともお前の知り合いに未だにNN用コードを新規で書く奴が要るのか?
それを一々気にするのが一番の無駄だが <>
Name_Not_Found<>sage<>2014/05/05(月) 15:28:50.60 ID:???<> ふむふむ
前の会社が運営していたサイトはメンテもしないで思いまんま使うと
なるほど、それなら楽でいいですね <>
Name_Not_Found<><>2014/05/05(月) 16:15:12.05 ID:4bZ+ZE3M<> 運営とコードメンテは普通別会社か別部署じゃね?
少なくとも一人の開発者がメンテするかどうかまで決める訳じゃないし関係ないことだ。 <>
Name_Not_Found<>sage<>2014/05/05(月) 17:28:47.57 ID:???<> 保守を別会社にやらせるのは時代遅れ。
いまは保守を抱えることで、顧客が気がつく前に改善点を見つけ出し、
そこから能動的に提案活動につなげるのが主流だよ。 <>
Name_Not_Found<>sage<>2014/05/05(月) 17:42:21.17 ID:???<> lodashの_.maxってMath.maxよりいいんですか? <>
Name_Not_Found<>sage<>2014/05/05(月) 21:21:33.15 ID:???<> lodashに_.isUndefinedがありますが
それならundefinedを返す_.undefinedみたいな関数も必要じゃないですか? <>
Name_Not_Found<>sage<>2014/05/05(月) 22:35:35.49 ID:???<> >>43
標準で用意されている機能をライブラリで用意する必要はない <>
Name_Not_Found<>sage<>2014/05/05(月) 23:11:46.46 ID:???<> それならisUndefinedやisNullもいらないのでは <>
Name_Not_Found<>sage<>2014/05/05(月) 23:42:57.73 ID:???<> >>45
はっきり言って不要だと思うが、リファレンスを読む限りではis系を全て揃えるポリシーがあるのだろう
また、Lo-Dashは定数を返すメソッドorプロパティを作らないポリシーなのだろう
undefined だけでなく、NaN, infenety..を返す機能も用意されていない
http://lodash.com/docs
正直、開発ポリシーを開発者ではない俺に聞かれても困るんだが
そんなことは作者に直接提案するなり、質問するなりすべきではないのか <>
Name_Not_Found<>sage<>2014/05/06(火) 00:35:41.81 ID:???<> 定期的にこっちでlodashの話題振ってるのは前暴れたあれにしか見えん <>
Name_Not_Found<>sage<>2014/05/06(火) 01:45:10.35 ID:???<> idの配列と、idをキーに持ったオブジェクトがあります
オブジェクトから、配列に含まれるキーのものだけを抜き出してあらたなオブジェクトを作るのに、
lodashを使い
_(idList).mapValues(function(id) {
return object[id];
});
という書き方に辿り着きました
これ以上シンプルな書き方はありますか? <>
Name_Not_Found<>sage<>2014/05/06(火) 02:05:55.43 ID:???<> >>48
そのものずばりな_.pickというのがある <>
Name_Not_Found<>sage<>2014/05/06(火) 02:21:43.33 ID:???<> なんと
ありがとうございました
ちなみに上記の例はmapValuesではなくmapで、
そして_(idList)のようなオブジェクト指向風の書き方だと結果もlodashオブジェクトになってしまうという
不具合がありました <>
Name_Not_Found<>sage<>2014/05/06(火) 04:06:09.50 ID:???<> lodashにはデフォルトのfor inのように
キーだけを回す関数はないのでしょうか?
forInなどはキーと値をセットで回すようになっています
しかしキーだけが欲しい場合、使わない値を渡すとjshintでエラーになります
keysでキー配列を作ってからforEachすれば目的は達成できますが
こういうやり方しかないのでしょうか? <>
Name_Not_Found<>sage<>2014/05/06(火) 07:20:38.94 ID:???<> >>47
lodashの話題がでただけでいつも過剰反応するのは
お前かい?w <>
Name_Not_Found<>sage<>2014/05/06(火) 07:34:29.59 ID:???<> >>43
> lodashに_.isUndefinedがありますが
> それならundefinedを返す_.undefinedみたいな関数も必要じゃないですか?
必要ない。 なぜならundefinedは代入されていない状態であり、
undefindを変数に代入するというコードは
書いてはいけないものだから。
代入することはないから、_.undefinedは不要だが
チェックすることはあるので、_isUndfinedは必要。
JavaScript標準のやり方をしないのは、コードに説明が必要なものだから
説明が必要なもの=複雑ということ=絶対に間違える。 <>
Name_Not_Found<>sage<>2014/05/06(火) 07:41:35.88 ID:???<> _とか付いてんの? 糞ライブラリだな <>
Name_Not_Found<>sage<>2014/05/06(火) 07:42:59.99 ID:???<> C言語では、_関数はgettext用だよ。
クソっていうのは、名前のことじゃないよね。 <>
Name_Not_Found<>sage<>2014/05/06(火) 08:10:01.34 ID:???<> >undefindを変数に代入するというコードは
>書いてはいけないものだから。
引数がない時のチェックはundefinedか否かでするから
渡さないことにしたい時のためにundefinedを代入することがあるよ <>
Name_Not_Found<>sage<>2014/05/06(火) 08:33:15.40 ID:???<> >>56
引数チェックは arguments.length 判定が好ましい <>
Name_Not_Found<>sage<>2014/05/06(火) 11:26:35.43 ID:???<> >>40
別会社に運営任せるとぐだぐだになるなんて、よくある話
別部署だってヤバいのにw <>
Name_Not_Found<>sage<>2014/05/06(火) 11:30:25.52 ID:???<> 俺も_の宣伝というか、人の作ったものの良さを分かる俺ってスゲーでしょっていう
構ってちゃんのアピールには嫌気がさしてきてるが構わないのが一番
>>56-57
引数のチェックはarguments.lengthとundefined両方の確認が必要
具体的にはES6に合わせるべき
つまりデフォルトパラメータ的なチェックではundefinedかどうか
レストパラメータ的チェックではarguments.lengthを見る必要がある
ただし、変数にundefinedを代入するのは結構挑戦的な行為だとは思う
悪いとは言わない <>
Name_Not_Found<>sage<>2014/05/06(火) 12:36:35.25 ID:???<> lodashの2.5.0ってまだでないのかな?
たしか文字列系が増えてるから
楽しみなんだけど。 <>
Name_Not_Found<>sage<>2014/05/06(火) 12:49:59.46 ID:???<> こうなってくると完全にキチガイステマだな。
誰も使わないゴミを作ってしまって焦ってるんだろう
こういうマイナーなプラグインは後で困るから使わない方がいいな。 <>
Name_Not_Found<>sage<>2014/05/06(火) 12:55:14.45 ID:???<> スルーしときゃそのうち消えるでしょ <>
Name_Not_Found<>sage<>2014/05/06(火) 15:04:50.98 ID:???<> はい、スルーしてください。つまりただの普通の会話に
いちいち反応しないでください。 <>
Name_Not_Found<>sage<>2014/05/06(火) 15:13:48.24 ID:???<> lodash最高なのに
使ってから言えよ、まじで <>
Name_Not_Found<>sage<>2014/05/06(火) 15:24:24.22 ID:???<> スレタイ読めないで普通の会話をしだすキチガイが使うプラグインということか <>
Name_Not_Found<>sage<>2014/05/06(火) 15:38:06.53 ID:???<> お前自分の意見と合わない人を批判したいだけの一番組織では使えないタイプの人間だろ? <>
Name_Not_Found<>sage<>2014/05/06(火) 15:53:58.31 ID:???<> lodashに関する質問はアピールや宣伝などではなく、単純に使っているからです
今まではあくまでユーティリティに使っていましたが、
関数言語的プログラミングがかなり保守性を上げることを実感してきたので、
コアな部分に組み込んで行こうと思っているところです <>
Name_Not_Found<>sage<>2014/05/06(火) 16:01:07.45 ID:???<> ろーだっしゅってあいいーろくでもつかえますか? <>
Name_Not_Found<>sage<>2014/05/06(火) 16:05:32.75 ID:???<> lodashのおかげで関数言語的プログラミングが強力なパラダイム変換だと開眼しました
それを知っている人が作ったライブラリだからでしょう
これからjqueryなみに重要なライブラリになるのは間違いありません
次第にjs本体に組み込まれていくでしょう <>
Name_Not_Found<>sage<>2014/05/06(火) 16:08:22.93 ID:???<> >>60
まじですか
文字系の関数はなんでないのと思っていたので、うれしいです <>
Name_Not_Found<>sage<>2014/05/06(火) 16:20:58.27 ID:???<> >>69-70
ここは質問スレです。雑談は自重してください。
ここまでLo-Dashの質問が増えたのならそろそろライブラリスレに移行すべきではないでしょうか。
ここはライブラリ系質問NGではありませんでしたが、Lo-Dashの質問で他の質問が埋もれるならすみわけする意味は十分にあります。 <>
Name_Not_Found<>sage<>2014/05/06(火) 16:41:58.48 ID:???<> 啓蒙の意味もありますので、しばらくここで続けたいと思っています <>
Name_Not_Found<>sage<>2014/05/06(火) 16:55:58.64 ID:???<> >>71
言うのは勝手、守るのも勝手、
守らないのも勝手、無視するのも勝手 <>
Name_Not_Found<>sage<>2014/05/06(火) 16:57:07.03 ID:???<> >>70
ここに書いてあるよ。 2.5.0の予定
https://github.com/lodash/lodash/wiki/Changelog <>
Name_Not_Found<>sage<>2014/05/06(火) 17:10:29.57 ID:???<> ゴネ方が前と同じだな
ここまで酷いとマッチポンプを疑ってしまう <>
Name_Not_Found<>sage<>2014/05/06(火) 17:27:39.77 ID:???<> >>74
いよいよ新時代突入ですね <>
Name_Not_Found<>sage<>2014/05/06(火) 17:30:47.32 ID:???<> 逆に胡散臭い印象を植付けようとしているのかも知れん
必ず批判的なレスが伴なうからググったときに効果的にサジェスト汚染される <>
Name_Not_Found<>sage<>2014/05/06(火) 17:34:15.97 ID:???<> 何かアホが湧いているようですね
ライブラリにとってサジェスト汚染など何の意味もありません
そしてjqueryが普通になったようにlodashも普通になるのだから
lodashの質問はごく普通の質問なのです <>
Name_Not_Found<>sage<>2014/05/06(火) 17:49:25.29 ID:???<> >>75
だからスルーしてろって。
こっちは楽しくlodashの話してるから
お前はスルーするんだろう?
それともレスして盛り上げてくれるのかい?w <>
Name_Not_Found<>sage<>2014/05/06(火) 17:59:49.66 ID:???<> ならlodashもjqueryと同じように 別スレ立ててそっちへ誘導するようにしよう <>
Name_Not_Found<>sage<>2014/05/06(火) 18:05:34.03 ID:???<> サイコパスに構うな
lodashは構って貰うための1話題に過ぎん
総合的な話題はプログラム技術板に誘導すべき <>
Name_Not_Found<>sage<>2014/05/06(火) 18:35:12.89 ID:???<> iframe内をスクロールさせる方法というのはないでしょうか?
現在a.htmlというページをiframeでb.htmlから見ています。
a.htmlにはページ下部にトップへ戻るというリンクをjqueryで作成して貼ってありページ内スクロールするようにしていますが
b.htmlからトップへ戻るを選択してもスクロールしません。もちろんa.html内ではちゃんとスクロールするので構文などは間違っていないと思います。
iframe内のトップへ戻るを有効にするにはどうしたらいいのでしょうか? <>
Name_Not_Found<>sage<>2014/05/06(火) 18:40:50.99 ID:???<> コードみなきゃ分からないだろカスが <>
Name_Not_Found<>sage<>2014/05/06(火) 18:53:24.08 ID:???<> >>80
勝手にやれ。俺はここでやる。
>>82
iframe関連はセキュリティの制限があるから
ローカルに置いたら動かなかった気がする。
同じドメインのサーバーにおいて試してみては? <>
Name_Not_Found<>sage<>2014/05/06(火) 19:05:30.44 ID:???<> オブジェクトを入れた配列を使って、
2分ヒープ(BinaryHeap)を作った
オブジェクトのプロパティの値が、
最小のものを取り出す
優先度つきキュー (順位キュー、priority queue)や、
ダイクストラ法 (Dijkstra's Algorithm)で使えます
MIT License です。jsdo.itに発表しました
ttp://jsdo.it/michihito/bGH5 <>
Name_Not_Found<>sage<>2014/05/06(火) 19:30:32.20 ID:???<> >>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>
となります。 <>
Name_Not_Found<>sage<>2014/05/06(火) 23:39:57.79 ID:???<> >>86
「b.htmlからトップへ戻るを選択」とは
div#pagetop の click を意味するのか?
その div は a.html 側に属するように見えるのだが <>
Name_Not_Found<>sage<>2014/05/07(水) 04:30:46.75 ID:???<> >>72
ここは宣伝スレじゃないんですけど <>
Name_Not_Found<>sage<>2014/05/07(水) 05:01:59.90 ID:???<> lodashであるオブジェクトを他のオブジェクトにシャローに追加するにはどうしたらいいのでしょうか?
mixinだと思ったのですが
var a = {
0: 'a'
};
var b = {
1: 'b'
};
_.mixin(a,b);
console.log(a);
とやっても追加されていないようです <>
Name_Not_Found<>sage<>2014/05/07(水) 05:36:01.30 ID:???<> >>89
http://toro.2ch.net/test/read.cgi/hp/1369444026/ へどうぞ <>
Name_Not_Found<>sage<>2014/05/07(水) 06:07:25.56 ID:???<> >>89
extendじゃなかったっけ?
defaultsってのもあるけど <>
Name_Not_Found<>sage<>2014/05/07(水) 06:08:02.07 ID:???<> mergeでもいいのか? 細かい違いで似たようなのがたくさんあるんだよなぁ。 <>
Name_Not_Found<>sage<>2014/05/07(水) 06:45:38.00 ID:???<> >>91
_.extendあらため_.assignで出来ました!
ありがとうございました <>
Name_Not_Found<>sage<>2014/05/07(水) 07:28:22.05 ID:???<> 似たようなのがたくさんあるってゴミライブラリみたいだな <>
Name_Not_Found<>sage<>2014/05/07(水) 09:43:20.75 ID:???<> ゴミだから使うなって事を広めに来たのか <>
Name_Not_Found<>sage<>2014/05/07(水) 12:01:13.64 ID:???<> 啓蒙の為に書き込むのは止めて欲しいな
まあ、啓蒙にすらなってないけど、本人は啓蒙のつもりだろうし <>
Name_Not_Found<>sage<>2014/05/07(水) 12:27:27.98 ID:???<> >>96
使う価値無いってわかったんだから、このスレでもう話すことないよね <>
Name_Not_Found<>sage<>2014/05/07(水) 13:33:01.07 ID:???<> 歪んだ正義感ほど厄介な物はない。 <>
Name_Not_Found<>sage<>2014/05/07(水) 15:20:14.77 ID:???<> 関数型プログラミングはオブジェクト指向の発明に匹敵するパラダイム変換だよね <>
Name_Not_Found<>sage<>2014/05/07(水) 16:59:46.67 ID:???<> >>98
自治厨の根底にあるのは正義感ではなくて恐怖だと思うよ
自分が新しい潮流に置いていかれることが怖いから自分の知らない話題に反発してるだけ <>
Name_Not_Found<>sage<>2014/05/07(水) 17:56:21.46 ID:???<> メソッドチェーンを途中で終わらせるにはどうしたらいいでしょうか?
jqueryにifメソッドを実装し、結果がfalseならそれ以降のメソッドチェーンを実行しない、
ということをやりたいのです <>
Name_Not_Found<>sage<>2014/05/07(水) 18:45:45.37 ID:???<> >>101
そういうプラグインがあったりするけどチェーンをやめた方が健康的だと思う。 <>
Name_Not_Found<>sage<>2014/05/07(水) 18:50:41.10 ID:???<> ありがとうございます
プラグインあるんですか
phpのフレームワークでは例外を投げてメソッドチェーンから抜けているようだったので、
jsで外側にcatchブロックを配置するのは難しいかなと思っていたのですが
どうやってるのか気になります <>
Name_Not_Found<>sage<>2014/05/07(水) 19:32:15.22 ID:???<> 一応言っておくがjQueryを拡張する話と、そういうプラグインがあるのとは全く別な話
jQueryが普通の作りならifを増設するくらい他愛無いが、やはりナンセンスだろう
もしも例外を投げて安全に抜けられるのならそちらの方がいい
それか、そもそもチェーンを諦める&依存をPromiseに移行する <>
Name_Not_Found<>sage<>2014/05/07(水) 20:48:29.82 ID:???<> lodashは数値にも対応して欲しいな
_(100).increment().valueOf()
みたいなことが出来るように
JS自体が完全なオブジェクト指向言語になるのが一番だけどそれは先のことだろうから <>
Name_Not_Found<>sage<>2014/05/07(水) 20:58:25.25 ID:???<> lodashの話持ち出すのはいいけど、そんな欠陥ばっかじゃ利用者増えないだろ
啓蒙したいなら、もっとベネフィットに焦点当てろよ <>
Name_Not_Found<>sage<>2014/05/07(水) 21:06:59.21 ID:???<> 可能性があるがゆえに要望も出てくるんだが?
可能性ないなら「こうなればいい」とすら思わない
単に使わないだけ <>
Name_Not_Found<>sage<>2014/05/07(水) 21:11:05.96 ID:???<> ここのスレの大半がloadashなんて使わないって言ってるのに、「こうなればよい」と思うことを垂れ流しているお前の態度が問題だって言ってるんだよ
問題提起をする前に、loadashを使いたいと思う人間を増やす努力をしろよ <>
Name_Not_Found<>sage<>2014/05/07(水) 21:15:11.11 ID:???<> このスレの大半ワロタw
お前だけだろ
というか俺は啓蒙とか思ってないから。
俺等が話してるのを見てその意味に気付く奴は気付く、それでいい。
数値対応も時間の問題だし。
アイデアを伝播した方が実現が早まるので書いているだけだ。 <>
Name_Not_Found<>sage<>2014/05/07(水) 21:16:36.98 ID:???<> そういう目的ならプラグインスレでやれよ
頭わるいな <>
Name_Not_Found<>sage<>2014/05/07(水) 21:38:23.71 ID:???<> 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"とか出てくるならなんとなく納得してしまうのですがそうはなりません
何か特別な仕様なのでしょうか <>
Name_Not_Found<>sage<>2014/05/07(水) 22:21:56.68 ID:???<> >>105
いちいちlodashに噛み付かなくていいよw
lodashって単語見るたびに
いちいちムカついて書き込まずにはいられないのか?
そんな人生で疲れない?
lodashをNGワードにすれば見なくて済むよ。
それをしないなら、自分でわざわざ見ているのと一緒。 <>
Name_Not_Found<>sage<>2014/05/07(水) 22:23:18.88 ID:???<> >>108
> ここのスレの大半がloadashなんて使わないって言ってるのに、「
ここは匿名掲示板なんで、大半とわかることはありえません。
つまり「大半が使わないって言ってるんだ」って
あなたが思い込みたいだけ。
それが露呈されただけのレスの意味しかない。 <>
Name_Not_Found<>sage<>2014/05/07(水) 22:27:21.72 ID:???<> lodashを話す奴も叩く奴も質問する奴もスレ違いって事分かって無いのかね?
>>3
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/ <>
Name_Not_Found<>sage<>2014/05/07(水) 22:28:33.76 ID:???<> >>114
何がスレ違いなのですか?
その根拠を示すべきだと思いますよ。 <>
Name_Not_Found<>sage<>2014/05/07(水) 22:36:36.67 ID:???<> >>105
それは質問ではないのでスレ違い
そしてその手の要望は作者に直接宣言すべき
最近、作者に直接いうべき発言が多くて困る <>
Name_Not_Found<>sage<>2014/05/07(水) 22:44:50.14 ID:???<> >>114
> (9) ライブラリ関連の質問は禁止ではありませんが、ライブラリスレで聞くとより回答を得やすいかもしれません。 <>
Name_Not_Found<>sage<>2014/05/07(水) 22:45:02.60 ID:???<> >>116
人にレスするなら、流れを理解するくらいまでさかのぼれよ。
俺等が話してるのを見てその意味に気付く奴は気付く、それでいい。ってかいてるだろ?
日本語分からないのか? <>
Name_Not_Found<>sage<>2014/05/07(水) 22:46:12.66 ID:???<> 話についてこれない奴はROMってろよカスが。 <>
Name_Not_Found<>sage<>2014/05/07(水) 22:47:10.88 ID:???<> >>117
> (9) ライブラリ関連の質問は禁止ではありませんが、ライブラリスレで聞くとより回答を得やすいかもしれません。 <>
Name_Not_Found<>sage<>2014/05/07(水) 22:49:50.33 ID:???<> 禁止ではないw <>
Name_Not_Found<>sage<>2014/05/08(木) 00:03:36.48 ID:???<> >>116
作者にこんなのの相手をさせるつもりかいな <>
Name_Not_Found<>sage<>2014/05/08(木) 00:05:57.90 ID:???<> やっぱ前揉めたときにきっちりスレ分けるべきだったんじゃないの <>
Name_Not_Found<>sage<>2014/05/08(木) 00:07:02.31 ID:???<> >>118
>109の事をいってるなら見当違いも甚だしい <>
116<><>2014/05/08(木) 00:38:40.79 ID:xkhwF8/N<> >>122
作者が相手してくれるかまでは保証できない
言い方次第では返信してくれるかもしれないし、無視される事もあるだろうが、それは作者が判断すべき事だと思う
どちらにせよ「ライブラリに関する機能提案」をここでしても有益な事は何もない
作者に直接メールするか、作者が開設しているforum(なければブログ等の何らかのコミュニティ)で議論するのが筋だろう
forumに書き込めば同意する人はレスするだろうし、彼のいう啓蒙もまあ出来なくはない
>>109では「俺等が話してるのを見てその意味に気付く奴は気付く、それでいい。」と豪語しているが、ようするに
・英語を書けないのでここで話題にすれば誰かが作者に提案してくれるだろう
・俺が提案しなくても誰かが提案してるはず。お前もそう思うだろう?
と他人に甘えた希望的観測を持っているに過ぎない
「皆がその考えを持っているなら作者に提案する人が誰もいない」という事実にこの人は気づいていない
なぜ作者に直接言わないのかしらないが、「障害があるなら自分で乗り越えてくれ」と彼に言いたい
俺だって英語苦手だが、頑張って読むし、皆そうしてると思うんだが <>
Name_Not_Found<>sage<>2014/05/08(木) 00:46:50.10 ID:???<> >>125
何度も言いますが、私の場合、目的は啓蒙ですから。
lodashを知らない人がその存在だけでも知ってくれさえすれば、それで十分なのです。 <>
Name_Not_Found<>sage<>2014/05/08(木) 00:50:47.55 ID:???<> >>99
最古のスクリプト言語のLispは関数型だ
むしろ関数型→オブジェクト思考と言える
最近関数型言語の実装が進歩して見直されてはいるが <>
Name_Not_Found<>sage<>2014/05/08(木) 01:06:01.31 ID:???<> 小技の質問です
var hoge =[];
の配列があったとして
このhogeの中身全部をfuge(hoge[i])の返り値にするとき
for(var i=0; i<hoge.length; i++){
hoge[i] =fuge(hoge[i]);
}
ってやってるんですが、これをもっと短く、早く、簡単に出来る方法とかありますか? <>
Name_Not_Found<>sage<>2014/05/08(木) 01:08:52.69 ID:???<> 十分短いし簡単だと思うよ
死ぬほど早さを求めたいならfugeにhoge渡して配列が変えるようにすれば関数呼び出しが減る <>
Name_Not_Found<>sage<>2014/05/08(木) 01:13:44.19 ID:???<> .map() でいいんじゃね <>
Name_Not_Found<>sage<>2014/05/08(木) 01:55:59.06 ID:???<> >>111
arr.propertyIsEnumerable('hoge')
Array.propertyIsEnumerable('push') <>
Name_Not_Found<>sage<>2014/05/08(木) 02:00:02.61 ID:???<> >>129>>130
ありがとうございます
これでまた最速に近づけた気がします <>
Name_Not_Found<>sage<>2014/05/08(木) 02:35:46.88 ID:???<> >>128
最速なら、hoge.length は変化しないのなら、
変数に代入してから使った方がよいらしい
そうしないと毎回、プロパティ or 関数?が呼ばれる? <>
Name_Not_Found<>sage<>2014/05/08(木) 02:42:30.94 ID:???<> >>126
何度も言うが、啓蒙はスレ違い <>
Name_Not_Found<>sage<>2014/05/08(木) 02:46:54.56 ID:???<> >>130のmapは最速にはほど遠いぞ… <>
Name_Not_Found<>sage<>2014/05/08(木) 02:53:01.97 ID:???<> >>134
この手の流れだと結局のところ反論するにも使ってみなくてはならなくなるんだよ
否定的な意見が強く出れば出るほど、認知度アップが見込める
スレ違いだと思う人がいても、結果が出ている限りやめないよ <>
Name_Not_Found<>sage<>2014/05/08(木) 03:17:48.56 ID:???<> >>136
効果の有効性は問題ではない
質問スレで啓蒙することがスレ違い
自分の目的の為なら他人の迷惑を顧みないところを見るに相当甘やかされて育ってきたんだな <>
Name_Not_Found<>sage<>2014/05/08(木) 04:08:31.08 ID:???<> >>128
そういう時にこそlodashなんだよ
lodashに慣れるとダッサいコードが我慢できなくなるよ <>
Name_Not_Found<>sage<>2014/05/08(木) 04:12:48.64 ID:???<> あぁ「速く」か
関数型だと速くはならないな
全体が筋のいいコードになることでアルゴリズムがブラッシュアップされていくので
小技で汲々とするより、大きなところで速度改善がなされるけどね <>
Name_Not_Found<>sage<>2014/05/08(木) 04:31:16.48 ID:???<> 関数型プログラミングは、処理の流れが一本で
一目で何をしているのか分かる。
そして一時変数が激減する。印象としては、なめらかな感じ。
従来のプログラミングは、
「これがこうなって、これがこうなって、そしてこれがこうなって・・」みたいな感じで
ガタガタしてる。
何をしているのか読み取るのに時間がかかる。 <>
Name_Not_Found<>sage<>2014/05/08(木) 06:40:58.26 ID:???<> jqueryのメソッドチェーンと関数型プログラミングは
本質的には同じ思想から発している <>
Name_Not_Found<>sage<>2014/05/08(木) 08:28:39.67 ID:???<> >>126
はい、みんなにクソだから使うなと伝えておきますね <>
Name_Not_Found<><>2014/05/08(木) 10:04:57.10 ID:Wa+IFk0G<> http://toro.2ch.net/test/read.cgi/internet/1344004876/93
↑ ↑ ↑ ↑ ↑ ↑ <>
Name_Not_Found<>sage<>2014/05/08(木) 10:53:02.43 ID:???<> >>132
だから感覚だけで最速に近づいたとか言ってはいけない
兎に角、計測第一だ <>
Name_Not_Found<>sage<>2014/05/08(木) 11:08:17.44 ID:???<> プログラミングすると精神を病んでしまいますか? <>
Name_Not_Found<>sage<>2014/05/08(木) 12:22:49.02 ID:???<> 嫌いなら病む
好きなら病まない <>
Name_Not_Found<>sage<>2014/05/08(木) 12:36:56.02 ID:???<> 分業化が明確でない俺の会社を見る限り、好き嫌いではなく自分はプログラミングしかできないってしがみついてる奴は確実に病んでる <>
Name_Not_Found<>sage<>2014/05/08(木) 13:54:23.17 ID:???<> このスレにはウサインボルト一派がいる
そいつらは病的なほど速度とコードの短縮を求めてる <>
Name_Not_Found<>sage<>2014/05/08(木) 17:33:21.77 ID:???<> コード短縮と速度は両立しないけどな。 <>
Name_Not_Found<>sage<>2014/05/08(木) 19:47:55.93 ID:???<> ネストされたオブジェクトの情報からdomエレメントを作ろうと思います
そういうプラグインみたいのありませんか?
オブジェクトにはclassやidやchildrenのようなキーがある感じです <>
Name_Not_Found<>sage<>2014/05/08(木) 19:52:26.57 ID:???<> >>148
操作の体感が重要なので、キュンキュンにするためなら何でもするつもりだった
一つでも命令が減らせるならそうした
しかしそんなことよりDOMツリーをなるべく単純に保つ方がずっとキュンキュンになることが分かり
俺は変わった <>
Name_Not_Found<>sage<>2014/05/08(木) 19:56:15.58 ID:???<> ループのたびに関数を呼び出すなんてとんでもないと思っていた時代が俺にもありました <>
Name_Not_Found<><>2014/05/08(木) 21:17:05.55 ID:Rjk5lK0S<> 本来とは質問の種類が違うかもしれませんが、初心者用スレにJavaScriptの質問は
こちらのスレでとあったのでこちらで質問させていただきます。
環境 Win7 64bit Firefox28
Firefoxでサイト閲覧時にJavaScriptは有効となっているはずなのに(別サイトおよびabout:configでも確認済み)
JavaScriptを用いて表示されるはずの画像が何故か見られません。
関係あるかどうか分かりませんがこの直前にFirefoxのアドオンでJAVAの有効・無効の切り替えをしていました。(ただ現在有効でも無効でもJavaScriptを用いた画像は見られません)
この画像が見られない原因(考えうる可能性でも)および直し方を教えてください。
ちなみに同じサイトをIE11で確認したらその画像を見ることができたのでセキュリティソフト関係ではないと思われます。 <>
Name_Not_Found<>sage<>2014/05/08(木) 21:28:44.34 ID:???<> firefox portableを落として
アドオンなど入ってない素のままのfirefoxで閲覧してみたら <>
Name_Not_Found<>sage<>2014/05/08(木) 23:59:41.87 ID:???<> オブジェクトのキーの順番は保証されないのですか? <>
Name_Not_Found<>sage<>2014/05/09(金) 00:06:51.30 ID:???<> オブジェクトのキーの順番とはどのような順番ですか? <>
Name_Not_Found<>sage<>2014/05/09(金) 00:11:09.25 ID:???<> は?書いた順番ですが? <>
Name_Not_Found<>sage<>2014/05/09(金) 00:19:49.81 ID:???<> 書いた順番にループでも取り出されのかって意味です <>
Name_Not_Found<>sage<>2014/05/09(金) 00:30:36.04 ID:???<> >>158
取り出す時に使用する構文は何ですか?
コードを書いて下さい <>
Name_Not_Found<>sage<>2014/05/09(金) 00:39:40.70 ID:???<> for in
です <>
Name_Not_Found<>sage<>2014/05/09(金) 00:41:12.11 ID:???<> >>160
for-inは列挙順を保証しません
順序に規則性があるなら配列を使用して下さい <>
Name_Not_Found<>sage<>2014/05/09(金) 01:14:20.50 ID:???<> そうですか・・・
分かりました <>
Name_Not_Found<>sage<>2014/05/09(金) 03:59:57.18 ID:???<> ちなみにオブジェクトに登録したキー順に取り出さないといけないケースってどんなときですか <>
Name_Not_Found<>sage<>2014/05/09(金) 04:02:47.18 ID:???<> 考えたのはfor in ついでにdocumentにappendするときですかね?
それならあの方法が使えますが <>
Name_Not_Found<>sage<>2014/05/09(金) 06:30:34.88 ID:???<> [1,2]と[3,4,5,6]という二つの配列を使って
[[1,3],[1,4],[1,5],[1,6],[2,3],[2,4],[2,5],[2,6]]
という一つの配列を作りたいです。
これをlodashでやるにはどうしたらいいでしょうか? <>
Name_Not_Found<>sage<>2014/05/09(金) 06:49:44.88 ID:???<> データベースで言うクロスジョインになると思うのですが
そういう関数は標準ではないようで・・ <>
Name_Not_Found<>sage<>2014/05/09(金) 08:29:58.10 ID:???<> そんな複雑なことlodashにはできません <>
Name_Not_Found<>sage<>2014/05/09(金) 09:10:38.62 ID:???<> ゴミだな <>
Name_Not_Found<>sage<>2014/05/09(金) 11:32:17.87 ID:???<> >>164
何をfor-inして何をappendするのですか
appendとはappendChildですか
あの方法とは何ですか
>>156-157もそうですが、内容を省略する癖があるようなので気をつけたほうがいいと思います <>
Name_Not_Found<>sage<>2014/05/09(金) 11:34:53.95 ID:???<> ぶっちゃけ、ここまで書いて理解できないようなら、教えるだけ無駄 <>
Name_Not_Found<>sage<>2014/05/09(金) 11:45:46.40 ID:???<> 本人は省略したのは周知の事実だからと認識しているのだろうが、本人が想定していない可能性がある事は考えてもいないんだろうな
「〜に決まってます」と返す人はプログラミングに向いてない <>
Name_Not_Found<>sage<>2014/05/09(金) 13:11:00.29 ID:???<> >>153
たぶん、そのサイトを作っているやつは素人なんだろう
IE11にだけ対応している、
HTML5, CSS3タグを使っているんだろう
JavaScriptとは関係ないかも
それか、Firefoxにもデバッガが付いているだろ?
それであちこちに、ブレークポイントを付けて、
動かしたり止めたりしながら、動きを確かめたら? <>
172<>sage<>2014/05/09(金) 13:18:36.46 ID:???<> たぶん作者が、そのサイトを作るときに、
IE11ではテストしたが、Firefoxではテストしなかったのだろう
Firefoxには、HTML5, CSS3, JavaScriptの、
未対応タグや構文間違いをチェックする、ツールは付いていないか?
または、そういうプラグインは無いか? <>
Name_Not_Found<>sage<>2014/05/09(金) 15:28:44.46 ID:???<> >>165の件ですが、rubyにproductというメソッドがあり、
jsで該当するコードも検索で見つけられました
このメソッドもそのうちlodashに実装されそうです <>
Name_Not_Found<>sage<>2014/05/09(金) 16:21:48.57 ID:???<> producthベクトル積だろ <>
Name_Not_Found<>sage<>2014/05/09(金) 17:19:24.23 ID:???<> いや「積」だから
配列だろうがベクトルだろうがproductなんだよ <>
Name_Not_Found<>sage<>2014/05/09(金) 19:41:45.12 ID:???<> 本屋いったらsublime textの本があったわ
lodashの本が出るのも時間の問題だな <>
Name_Not_Found<>sage<>2014/05/09(金) 19:59:24.14 ID:???<> >>177
使いこなし方!みたいな?
本の名前教えて <>
Name_Not_Found<>sage<>2014/05/09(金) 20:00:36.98 ID:???<> Web制作者のためのSublime Textの教科書
という本 <>
Name_Not_Found<>sage<>2014/05/09(金) 21:06:57.05 ID:???<> Sublime Text www 完全にチョンでワロタwww lodash 推しはチョンだったのかwww すげー納得できたわwww <>
Name_Not_Found<>sage<>2014/05/09(金) 22:54:02.62 ID:???<> 何言ってんだこいつはw
頭おかしいな
というか、やっぱりD級プログラマーはネトウヨだったか <>
Name_Not_Found<>sage<>2014/05/09(金) 23:10:35.15 ID:???<> チョン、ネトウヨ、D級プログラマといっている人は皆おかしい <>
Name_Not_Found<>sage<>2014/05/09(金) 23:12:47.24 ID:???<> NO <>
Name_Not_Found<>sage<>2014/05/09(金) 23:16:36.34 ID:???<> >>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);
}, [ [] ]);
}; <>
Name_Not_Found<>sage<>2014/05/09(金) 23:25:40.44 ID:???<> >>184
ありがとうございます
自分が見つけたのもまさにそのサイトでした <>
Name_Not_Found<>sage<>2014/05/09(金) 23:29:22.46 ID:???<> lodashは発祥がunderscoreクローンなので、まだunderscoreの記事の方が多いようですね
そろそろunderscoreを乗り越えて独自実装に力を入れていってほしいです <>
Name_Not_Found<>sage<>2014/05/09(金) 23:35:25.53 ID:???<> productはperlとかで実装したことあるけど、
時々使うんだよね。lodashに入ってなかったとは。
>>186
いや、トップにデカデカとかいてあるやんw
http://lodash.com/
Features not in Underscore <>
Name_Not_Found<>sage<>2014/05/09(金) 23:37:49.90 ID:???<> Underscoreではなくlodashを使う理由は
速度が速いからではなく、関数が多いからだと
思っていたけど。 <>
Name_Not_Found<>sage<>2014/05/10(土) 00:03:15.24 ID:???<> 完全互換ではないけど、まだそこまで独自実装に積極的でないような?
その程度の意味 <>
Name_Not_Found<>sage<>2014/05/10(土) 01:42:07.66 ID:???<> >>184
それはlodashである必要性が皆無だね
標準で十分実装できる <>
Name_Not_Found<>sage<>2014/05/10(土) 01:56:33.83 ID:???<> forループの方が速いしコードも短い。使い所が理解できてない人が無闇に宣伝しても、ネガティブキャンペーンにしか見えない <>
Name_Not_Found<>sage<>2014/05/10(土) 02:02:46.09 ID:???<> >>153
まずコンソールを確認する
何も表示されてなかったらデバッガを開いてもう一度実行する
エラーがあれば止まるが止まらなかったら適当なところにブレーク張ってステップ実行していくしかないな <>
Name_Not_Found<>sage<>2014/05/10(土) 03:53:32.89 ID:???<> 以前firefoxのコンソールで__proto__が使えたと思うのですが
chrome(じゃなくてもいいですが)で同じようなプロパティ
もしくは参照できるようなものはありませんでしょうか
よろしくおねがいします <>
Name_Not_Found<>sage<>2014/05/10(土) 04:53:30.45 ID:???<> 最初の文字だけ大文字にする一番簡単な方法はなんですか? <>
Name_Not_Found<>sage<>2014/05/10(土) 04:57:17.71 ID:???<> >>191
じゃあこの回答者が質問者の使ってないunderscore.jsを使ってコードを書いて、
16件の評価をもらっているのはなんでなんですかねぇ?
しょうもないケチを付ける前に自分のスキルを振り返った方がいいですよ <>
Name_Not_Found<>sage<>2014/05/10(土) 05:01:11.16 ID:???<> 能力のある人間は、未知の現象に当たった時、
「自分は分からないが何か理由があるのだろう」と考える
無能な人間は短絡的かつ可能性の低い理由に飛びつき、
「相手が愚かだからだろう」と考える
したがって未知の出来事への反応を見れば、
人間の能力というものはおおかた正確に見極められる
>>190や>>191がどっちなのかは、もちろん言うまでもないですね <>
Name_Not_Found<>sage<>2014/05/10(土) 05:10:13.47 ID:???<> lodashはS級アプリのtweetdeckにも使われるんだが。
謎の否定をしてる珍プログラマーはtweetdeckレベルのモン作れるようになってから偉そうなこと言えよ <>
Name_Not_Found<>sage<>2014/05/10(土) 05:33:52.29 ID:???<> lodashをダシに、自身の正当性や論理を展開する浅ましさ
lodashをタテに、スレ違いの荒らし行為を正当化させていると言うべきか <>
Name_Not_Found<>sage<>2014/05/10(土) 06:01:01.09 ID:???<> 珍グラマー何言ってるか分からんわ
もう黙っとけよ、それが一番いいから。
誰にとってもな <>
Name_Not_Found<>sage<>2014/05/10(土) 07:30:13.50 ID:???<> ライブラリの話は禁止されてないからスレ違いですら無いしなぁ。
なんでlodashがこのスレででてくるか。
たとえばjQueryはDOMライブラリだからDOMの話に登場するのは当たり前。
lodashはなんのライブラリかというと標準関数のライブラリなんだよね。
JavaScriptの基本文法を拡張するライブラリのようなもの
たとえば、forEachメソッドに相当する_.eachがあったりする。
なのでこのスレででてくるのは当然なんだよね。 <>
Name_Not_Found<>sage<>2014/05/10(土) 08:22:55.15 ID:???<> つまりlodashはゴミみたいなもんってこしか <>
Name_Not_Found<>sage<>2014/05/10(土) 09:19:21.27 ID:???<> lodashそのものはゴミではない
スレ違いを指すものは、質問者に成りすまして啓蒙活動をすることだ
何を自分の都合の良いように解釈しているのか <>
Name_Not_Found<>sage<>2014/05/10(土) 10:05:48.16 ID:???<> >>202
俺は見抜いてるんだー。質問者になりすまして啓蒙活動してるって
見抜いてるんだ。匿名掲示板だけど、全部わかってるんだー。
って言いたいわけ? <>
Name_Not_Found<>sage<>2014/05/10(土) 10:09:36.67 ID:???<> 俺の解釈は、啓蒙活動だ。
お前は、都合のいい解釈をするな。 <>
Name_Not_Found<>sage<>2014/05/10(土) 10:42:01.95 ID:???<> >>196
未知の現象に当たったのは君だよ
君は>>184のほとんどのメソッドが標準で実装されている事実を知らないでしょ
だからそんな頓珍漢なレスになるんだよ <>
Name_Not_Found<>sage<>2014/05/10(土) 10:48:12.12 ID:???<> >>203
少なくとも私はそう思っている。
最終的にはこのスレの質問者と回答者に判断を委ねるが、あなたはその2者のどちらでもない。
あなたは、匿名を盾に相手の虚を付くことではなく、質問者に成りすまし啓蒙活動をしていないことを証明すべきだ。
匿名という名の盾を外し、個として発言して下さい。
lodashが下位互換もので使えないと言われれば、相手の能力を蔑み、
lodashが必要とされていないと言われれば、匿名掲示板を盾にマイノリティー派として見下す。
一体あなたの発言の何を信じればいいのか。 <>
Name_Not_Found<>sage<>2014/05/10(土) 10:50:07.00 ID:???<> 匿名掲示板で啓蒙活動?寝ぼけるのもいい加減にしろ。 <>
Name_Not_Found<>sage<>2014/05/10(土) 10:52:25.22 ID:???<> ライブラリの質問はスレ違いではないですが、Lo-Dashの質問が増えたので住み分けの為にライブラリスレに移行を促したら、>>72で啓蒙を理由に拒否されました。
これには今でも納得できません。 <>
Name_Not_Found<>sage<>2014/05/10(土) 10:54:19.18 ID:???<> 仕方ないから次から厳格にライブラリはスレチにすればいいよ
このスレはもう諦めとけ <>
Name_Not_Found<>sage<>2014/05/10(土) 10:56:51.59 ID:???<> >>72,126は啓蒙を理由にLo-Dashの雑談をしてる
雑談は明らかにスレ違い <>
Name_Not_Found<>sage<>2014/05/10(土) 11:05:21.00 ID:???<> 俺もライブラリはライブラリスレでいいと思う
>>1の(9)を書き換えていいんじゃないかな <>
Name_Not_Found<>sage<>2014/05/10(土) 11:27:05.83 ID:???<> テンプレ修正するなら雑談禁止ルールも欲しいな
あんまいいたくなかったが、ここまで雑談が増えると目に余る <>
Name_Not_Found<>sage<>2014/05/10(土) 11:51:11.19 ID:???<> 現時点で雑談禁止までしなくていいよ
自己主張のために人を不快にするほど過度なライブラリの話をしたのが問題なんだから <>
Name_Not_Found<>sage<>2014/05/10(土) 11:57:04.81 ID:???<> 件のやつを除けば質問を肴にした雑談が殆どだしいいんでね
それで回答者の数を確保してる側面もあると思う <>
Name_Not_Found<>sage<>2014/05/10(土) 12:11:08.00 ID:???<> >>194
最初の1文字だけ取り出してあっぱーしたらいんじゃね? <>
Name_Not_Found<>sage<>2014/05/10(土) 12:13:58.22 ID:???<> ここまで自作自演w <>
Name_Not_Found<>sage<>2014/05/10(土) 12:14:37.32 ID:???<> ろーだっちゅを啓蒙するには、専用スレ建てて有用な議論交わし続けることだよね
ここでゴミのようなソースや欠点さらしつづけても、便利だとも思わないし選択肢から消えるだけ
まあ、それが目的なのかもしれないが <>
Name_Not_Found<>sage<>2014/05/10(土) 12:20:32.83 ID:???<> はい、それが目的なので
ここでずっとやりますよw
やらない理由がない。 <>
Name_Not_Found<>sage<>2014/05/10(土) 12:37:04.50 ID:???<> 見たくない人は、lodashをNGワードに指定すればいいだけ。 <>
Name_Not_Found<>sage<>2014/05/10(土) 12:49:10.85 ID:???<> 皆さんは __proto__ を何て読んでいますか?
単に「プロト」ですか?
「アンスコアンスコプロトアンスコアンスコ」ですか? <>
Name_Not_Found<>sage<>2014/05/10(土) 12:54:38.94 ID:???<> >>218
> やらない理由がない。
lodash信者に加えて、lodash否定派まで参加したら争いが絶えない <>
Name_Not_Found<>sage<>2014/05/10(土) 13:09:59.34 ID:???<> >>221
だから、それが嫌ならこのスレから出ていくか、
lodashをNGワードに指定すればいいって言ってるんだよ。 <>
Name_Not_Found<>sage<>2014/05/10(土) 13:20:08.53 ID:???<> >>222
自分から迷惑行為をしておいて「出てけ」というか
自己中を極めてるな <>
Name_Not_Found<>sage<>2014/05/10(土) 13:25:56.03 ID:???<> >>223
えとさ、でていかなくていいんだよ。
でもこの状況は変わらない。
どうせ書き込み相手を2ちゃんねるから遮断することも出来ないんだし、
ネットをやめさせることも出来ない。どうやってもとめることは不可能。
だよね? 違う?
文句の書き込みでスレ埋めるってことが君がしたいことなの? <>
Name_Not_Found<>sage<>2014/05/10(土) 13:32:36.18 ID:???<> >>224
> でもこの状況は変わらない。
いや、lodash否定派が進んで争いの種を撒いてるんでしょ
自分から争いの種を撒いておいて何他人行儀な話しぶりなのさ
最初から否定派に回らず、スルーすればいいでしょ
「だから、それが嫌なら」という書き方から>>218と同一人物と判断したけど、違うのならわかる書き方をしてくれよ
「だから」なんて紛らわしすぎる <>
Name_Not_Found<>sage<>2014/05/10(土) 13:43:30.14 ID:???<> >>225
じゃあ俺はもうお前を無視するよ。
ただし無視するのはお前とこのくだらない話題だけで、
lodashに関連する話題が出たらレスはする。
その時、お前は何をする?
それだけ聞かせてくれ。 <>
Name_Not_Found<>sage<>2014/05/10(土) 13:54:25.69 ID:???<> >>226
もう君が何を言ってるのかさっぱりわからない
・結局、あなたが>>218だったのかどうかが不明
・「lodashをNGワードに指定すればいい」といったと思えば、「lodashに関連する話題が出たらレスはする」と先の発言を否定する事をいってる
自己矛盾に気がついてないのか
> その時、お前は何をする?
こちらの質問は無視して自分だけ質問するのか
その発言に矛盾があってひょっとしたら理解してくれるかもと思ったら指摘するが、それ以外はスルーする <>
Name_Not_Found<>sage<>2014/05/10(土) 14:16:56.34 ID:???<> 匿名掲示板では先の自分の発言を自分ではないことにすることが出来る
いくらでも他人になりすませるので矛盾があっても「それは自分ではない」と言い訳できる
会話が成り立たなくて当然だな <>
Name_Not_Found<>sage<>2014/05/10(土) 14:29:34.03 ID:???<> >>227
「lodashをNGワードに指定すればいい」
というのは見たくない人に対してで
「lodashに関連する話題が出たらレスはする」
は、勝手にするってことだろ? <>
Name_Not_Found<>sage<>2014/05/10(土) 14:30:45.82 ID:???<> >>227
もしかしてNGワードの意味がわからなかったのか?
2ちゃんねるブラウザでNGワードに登録すると
その書き込みは見えなくなるんだよ。
見たくないものは見なくて済むよって言うこと。 <>
Name_Not_Found<>sage<>2014/05/10(土) 15:09:39.64 ID:???<> >>203 この挑発的な煽り方と一緒だな。じゃあハッキリ言ってやろうじゃないか。
>>229-230
誰にも賛同されず、スレルールすら無視して話そうとする、
お前の存在がこのスレには要らない。
お前が居なくなれば、通常通りスレは進行し、皆楽しく有意義に雑談・技術やアドバイスを話し合える。
お前が居なくなれば、スレのテンプレも変える必要もなく、NGワードも使う必要がなくなる。
お前が居なくなれば、ライブラリの話も異常に警戒することもなくなる。
それでも居続けるお前は荒らし、荒らし以外の何者でもない。 <>
Name_Not_Found<>sage<>2014/05/10(土) 15:43:50.83 ID:???<> うるさーい(´・ω・`) <>
Name_Not_Found<>sage<>2014/05/10(土) 15:49:44.11 ID:???<> ECMAScript5で追加されたArrayのフィルター系メソッド(every,some,forEach,map,filter,reduce,reduceRight)
を使えば大抵事足りる(IE9以降が必要だが) <>
Name_Not_Found<>sage<>2014/05/10(土) 17:00:10.37 ID:???<> >>233
IE9移行が必要でしょ?
そういう時にlodash使えばいいわけよ。
古いブラウザ(XPサポートおわっちゃったが、そのIE6までも)対応している。
これからもJavaScriptは拡張されるし、ブラウザごとの差異はなくならないので
クロスブラウザを考えると、こういうライブラリが無くなることはないだろう。 <>
Name_Not_Found<>sage<>2014/05/10(土) 17:03:38.07 ID:???<> あ、IE6対応で思い出したけど、lodashの3.0.0は
IE6、IE7サポートが終了する。
2.5.0はサポートされているんで、古いブラウザ対応する
最後のバージョンなんだよね。IE6でも実装可能なメソッドが
できるかぎり搭載されるはずだから、早く出ないかな。
https://github.com/lodash/lodash/wiki/Roadmap <>
Name_Not_Found<>sage<>2014/05/10(土) 17:19:51.75 ID:???<> ユーティリティライブラリ vs Polyfillライブラリみたいな? <>
Name_Not_Found<>sage<>2014/05/10(土) 17:38:16.14 ID:???<> Polyfillっていうのは、標準が決まらないと作れないんだよね。
あくまで標準を満たしていないものに、対応機能を追加するものだから。
それはそれであるといいんだけど、進化はどうしても遅くなっちゃうの。 <>
Name_Not_Found<>sage<>2014/05/10(土) 17:44:32.25 ID:???<> ECMAScript 5 はもう十分に安定してるから問題ない <>
Name_Not_Found<>sage<>2014/05/10(土) 17:51:03.41 ID:???<> ECMAScript 5が安定しているかどうかではなくて、
ブラウザがサポートしているかどうか。
http://kangax.github.io/compat-table/es5/
あと、やっぱりECMAScript 5だけじゃ少ない。 <>
Name_Not_Found<>sage<>2014/05/10(土) 18:07:49.35 ID:???<> Polyfillライブラリを使えば問題ないってことだろう
少なくとも>>184はそう <>
Name_Not_Found<>sage<>2014/05/10(土) 18:09:41.16 ID:???<> >>205
知らないわけないだろww
低能は他人を自分以下に設定したがるから面倒くさい
lodashを使うという発想はES3基準にするところから始まってるんだよ <>
Name_Not_Found<>sage<>2014/05/10(土) 18:14:48.89 ID:???<> ES3でもES5やES6の機能を使えるって凄いな。 <>
Name_Not_Found<>sage<>2014/05/10(土) 18:14:49.01 ID:???<> 範囲が広くて利用者が多いPolyfillライブラリが無いってことだよね <>
Name_Not_Found<>sage<>2014/05/10(土) 18:15:33.40 ID:???<> Polyfillは所詮Polyfillで、標準機能よりも
多くのことは出来ないからなぁ。 <>
Name_Not_Found<>sage<>2014/05/10(土) 18:23:21.19 ID:???<> lodashはpolyfill以上のものだから。
jqueryもそうだけど良く出来たライブラリはJSの機能を予言的に実現していく。
ライブラリについて話すということは未来のJSについて話すことと同じ。
標準機能という過去にしがみつくか、ライブラリという未来に手を伸ばすか
そこがB級以下とA級以上の差だろうな <>
Name_Not_Found<>sage<>2014/05/10(土) 18:30:15.49 ID:???<> jQueryやlodashも標準仕様全ての上位互換じゃないから、一長一短だよね
独自の仕様を基礎にするか、標準や草案の仕様を基礎にするか <>
Name_Not_Found<>sage<>2014/05/10(土) 18:30:22.58 ID:???<> 今時、IE8をサポートしなきゃいけない状況はそう多くないな
IE6は尚更だ <>
Name_Not_Found<>sage<>2014/05/10(土) 18:31:43.72 ID:???<> IE8の駆逐作業はXPサポート切れ1年前あたりから急激に行われてきた気がする <>
Name_Not_Found<>sage<>2014/05/10(土) 18:41:07.00 ID:???<> そもそも、lodashに限らず、特定のライブラリに依存したくないや <>
Name_Not_Found<>sage<>2014/05/10(土) 18:41:35.26 ID:???<> >>246
そもそもJavaScriptは標準ライブラリが貧弱だからな。
あとpolyfillのような標準に準拠させるためのライブラリっていうのは
異端な存在で、普通のライブラリは、標準仕様では提供されていない
機能を提供するものだ。 <>
Name_Not_Found<>sage<>2014/05/10(土) 18:42:31.96 ID:???<> これが現実
IE8 50ヶ月連続1位 - 4月ブラウザシェア
http://news.mynavi.jp/news/2014/05/07/066/ <>
Name_Not_Found<>sage<>2014/05/10(土) 18:58:35.74 ID:???<> >>246
> jQueryやlodashも標準仕様全ての上位互換じゃないから
他の言語を使っている人からすれば意味不明だなこれ。
たとえばここにRubyのライブラリがたくさんあるわけだが
https://rubygems.org/
それらは標準仕様すべての上位互換か?
ライブラリに何を求めているのだろうか?
古いブラウザ用に標準仕様を満たすためのもの?
そんなわけがない。標準仕様を実装するのはライブラリの仕事ではない。
長らくJavaScriptの世界にライブラリと呼べるものがなかったからだろうか
ライブラリを互換性を保つためのものだと勘違いしている人がいる。 <>
Name_Not_Found<>sage<>2014/05/10(土) 19:02:41.85 ID:???<> >>250
jQueryやlodashも、polyfillするコード群も、標準仕様の機能を含むからライブラリと呼ぶべきではないってこと? <>
Name_Not_Found<>sage<>2014/05/10(土) 19:05:07.11 ID:???<> >>253
含むだけなら、「Polyfill + ライブラリ」だろ
屁理屈言ってるんじゃねーよw <>
Name_Not_Found<>sage<>2014/05/10(土) 19:11:59.58 ID:???<> 重要なのは関数言語的パラダイム変換とライブラリが連動しているということ
標準機能だけで「悟り」を得るのは不可能
rubyでもpythonでも、もちろんJSでも不可能だった悟りを俺はlodashで得た <>
Name_Not_Found<>sage<>2014/05/10(土) 19:12:44.51 ID:???<> jQueryやlodashに含まれてるのは
ブラウザ間での非互換性を解決する機能であって
標準仕様そのものじゃないけどな。
たしかprototype.jsには標準機能を満たすための
実装が含まれていたけど、早期実装してしまったために
あとから標準になった仕様と同じ名前のメソッドで
動きが違うという別の問題を起こしてしまったけど。 <>
Name_Not_Found<>sage<>2014/05/10(土) 19:57:50.21 ID:???<> 何この終わりのない宗教戦争
>>246が全てを語ってると思うけどな
それ以上はただの個人的な感情のぶつかり合いだ <>
Name_Not_Found<>sage<>2014/05/10(土) 20:01:53.19 ID:???<> 意味不明w
すべてを語っているどころか情報量ゼロじゃねーか <>
Name_Not_Found<>sage<>2014/05/10(土) 20:20:59.69 ID:???<> とりあえず、>>184のコードでlodashが糞遅いということを示しておこう。
http://jsperf.com/productlodashvsrow
forループよりも10倍以上遅いんだがw 予想以上に糞w <>
Name_Not_Found<>sage<>2014/05/10(土) 20:21:11.55 ID:???<> jQueryやlodashも標準仕様も一長一短
どっちがいいかケースバイケース
lodashで悟りを得るとか言ってるのはただの信者でしょ <>
Name_Not_Found<>sage<>2014/05/10(土) 20:48:13.33 ID:???<> 一長一短ww
「右の反対は左」みたいなことを言って悦に入れる頭の悪さが羨ましいわ <>
Name_Not_Found<>sage<>2014/05/10(土) 20:53:10.50 ID:???<> >>259
それはまともな反論だな
たしかに単純に速度だけで言うと、当然ながら遅くなる
コストの高い関数呼び出ししまくりだし。
でもボトルネック以外のところは10倍遅くても体感は変わらないし、
その遅さを余裕で帳消しにするメリットがあるわけだ <>
Name_Not_Found<>sage<>2014/05/10(土) 21:36:31.44 ID:???<> >>262
帳消しにするメリットとは? <>
Name_Not_Found<>sage<>2014/05/10(土) 21:40:14.77 ID:???<> >>263
たとえば、JavaScriptのforEach。
なんでforがあるのに作られたと思う?
それは、作るのが早く、バグが少なくなるから。
lodashは基本的にこのような考え方で作られている。
もっといい方法があるということは、JavaScript自身で
証明されているんだよ。
lodashはそれを先行実装しているだけ。
ECMAScript 10ぐらいになったら、lodashの
今のメソッドを全部実装するかもね。 <>
Name_Not_Found<>sage<>2014/05/10(土) 21:41:31.83 ID:???<> なるほど、未来のJavaScriptを今すぐに
使えるようになるってわけだな。 <>
Name_Not_Found<>sage<>2014/05/10(土) 21:50:35.98 ID:???<> 未来のJavaScriptをすぐに使えるっていうのは
わかりやすいメリットだな。
forEachもそうだけど、JavaScriptを見ていると
クロージャーを引数に取る関数ってのが増えてきている。
アロー演算子というクロージャーを引数にとる関数を
使いやすくする機能も出来た。
この流れは主流になるんじゃないかな。というか、もう主流かな。
lodashを使えばこれが今すぐ現実になる。 <>
Name_Not_Found<>sage<>2014/05/10(土) 22:39:15.09 ID:???<> >>264
「作るのが早く、バグが少なくなるから」の具体例は?
forに対してforEachのメリットは何となくわかるけど、あなたの説明には具体性がなく説得力にかける
それにforEachはES5であってlodashではないからlodashのメリットが全く伝わってこない
lodashが先行仕様になってる理由も説明できてないように読めるけど、もっと具体的に話して欲しい <>
Name_Not_Found<>sage<>2014/05/10(土) 22:48:01.17 ID:???<> なんでかまうのか <>
Name_Not_Found<>sage<>2014/05/10(土) 22:50:51.82 ID:???<> アロー演算子とあるか、ライブラリで演算子を拡張できるものなのか <>
Name_Not_Found<>sage<>2014/05/10(土) 22:52:58.98 ID:???<> オブジェクト指向以後は、オブジェクト指向より前には戻れない
しかし、オブジェクト指向のメリットを言葉で説明するのはなかなか難しい
関数型言語のメリットもこれに似ている
「これは良いものだ」と分かるが、良さを説明するのは難しい
しかし一言で言うと、コードが美しくなる <>
Name_Not_Found<>sage<>2014/05/10(土) 22:55:19.02 ID:???<> 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 <>
Name_Not_Found<>sage<>2014/05/10(土) 23:04:36.97 ID:???<> >>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 <>
Name_Not_Found<>sage<>2014/05/10(土) 23:14:27.37 ID:???<> 熱い議論の途中ですまんが
今から使うならunderscoreよりもlodashを使うべきなの? <>
Name_Not_Found<>sage<>2014/05/10(土) 23:15:48.09 ID:???<> >>272
「lodashに多数の関数が定義されてる」だけではメリットとはいえないと思う
それならjQueryの方がよほどたくさんの関数やpluginがあるよ
多数の機能が揃っているだけならplugin数の多いjQueryに軍配があがる
というか、「たくさんの機能があるからいい」は短絡に過ぎると思うけど、如何?
lodashにあるforEachはES5相当の機能だから、lodashを使う必然性がない
lodashのメリットにはなりえないよ <>
Name_Not_Found<>sage<>2014/05/10(土) 23:16:37.70 ID:???<> >>272
ゴミ箱いっぱいって感じだな <>
Name_Not_Found<>sage<>2014/05/10(土) 23:16:50.52 ID:???<> underscoreって単独でも使えるけど、
backboneのおまけみたいで気持ち悪いんだよね。
lodashの方が関数多いはずだし、
lodashよりメリットあるの? <>
Name_Not_Found<>sage<>2014/05/10(土) 23:17:36.10 ID:???<> >>273
用途に合ったライブラリを選べばいいだけで、無条件にどちらを選ぶってものでもないと思うよ
両方使ってみて自分の感性に合うライブラリを使用するのが一番いい <>
Name_Not_Found<>sage<>2014/05/10(土) 23:17:48.28 ID:???<> >>274
便利な関数が沢山定義されているのは
明らかなメリットでしょ? <>
Name_Not_Found<>sage<>2014/05/10(土) 23:19:51.80 ID:???<> lodashとECMAScriptを見てると、
JavaScript標準ライブラリの進化した先がlodashに見えてくるよ。
forEachもそうだし、将来lodashの幾つかが
JavaScriptにバックポートされてもおかしくないよね。 <>
Name_Not_Found<>sage<>2014/05/10(土) 23:20:20.45 ID:???<> >>278
便利な関数ならね
でも、便利な関数が多数あることを説明できてないでしょ? <>
Name_Not_Found<>sage<>2014/05/10(土) 23:22:23.48 ID:???<> lodashの関数が便利かどうかなんて
いまさら低レベルなこと言わないよねw
これらの関数ってJavaScriptに搭載されていないだけで
他の言語では普通に標準ライブラリだったりする。
たとえばRubyに同等のものがたくさんある。
http://docs.ruby-lang.org/ja/search/class:Array/version:2.1.0/ <>
Name_Not_Found<>sage<>2014/05/10(土) 23:27:01.67 ID:???<> >>281
lodashの関数が便利なのは当たり前で知らない人は低レベルなのか
何か話が合わないようなのでこの辺で失礼するよ
気を悪くしたらごめんね <>
Name_Not_Found<>sage<>2014/05/10(土) 23:30:19.38 ID:???<> >>276-277
レスさんくす
undersocreっておまけのような存在だったのか
知らなんだ
最近ここを覗くようになって頻繁にlodashが出てくるから
underscoreと比べどんなメリットがあるのかと思ったんだ
underscoreとlodashとの差分がポイントの1つなんだね。
ともあれ >>277 の言うように実際に自分で使ってみて判断するのが一番なんだろうな <>
Name_Not_Found<>sage<>2014/05/10(土) 23:30:37.20 ID:???<> Array.prototype.forEach の起源は Lo-Dash なのでしょうか?
私は Firefox が起源だと思っていたのですが…。 <>
Name_Not_Found<>sage<>2014/05/10(土) 23:30:45.43 ID:???<> いえいえ消えてくれるのは
本望なのでどんどん去ってください。 <>
Name_Not_Found<>sage<>2014/05/10(土) 23:34:15.20 ID:???<> >>284
forEach、つまりクロージャーを引数に取る
ループは関数型言語起源だよ。
lodashどころかECMAScritpでもFirefoxでもない
そして、関数型言語起源のものを
JavaScriptで使えるようにしたのが
lodashなんだ。
ECMAScriptではそのほんの一部しか採用されていないが、
lodashであれば更に多くの関数型言語起源のものが使える。
forEachがそうだがJavaScriptは関数型言語起源のものを採用しつつある。
だからlodashを使うということは、将来のJavaScriptを使っているようなものなんだよ。 <>
Name_Not_Found<>sage<>2014/05/10(土) 23:38:56.41 ID:???<> >>283
確かに Lo-Dash の話題が多いようだけど、一部の狂信的な信者も常駐している感があるのでお気をつけを
全部が信者とはいわないけど、Lo-Dash 関係の話題は自分で検証して事実確認するぐらいには疑っても損はないと思うよ
結局、自分で使うものだからね
他人に判断を委ねるぐらいなら、自分で検証して判断するのが一番いい <>
Name_Not_Found<>sage<>2014/05/10(土) 23:41:46.83 ID:???<> lodashの関数の有用性は今更考えることじゃないな。
他の言語の焼き直しなんだし。 <>
Name_Not_Found<>sage<>2014/05/10(土) 23:43:42.84 ID:???<> var hoge;の中の数値があるか?ってとき
if(!hoge && hoge!=0)
ってやってるんですがもっと一発でフィニッシュできる方法ありまっか? <>
Name_Not_Found<>sage<>2014/05/10(土) 23:45:04.60 ID:???<> 話題が多いっていうかこの板じゃID出ないからね <>
284<>sage<>2014/05/10(土) 23:46:10.65 ID:???<> >>286
せっかく回答いただいたのに申し訳ないのですが、私の質問内容に沿う回答ではないようです。
foreach が PHP 等の他言語に存在することは知っていますが、「それをJavaScriptに始めに取り込んだ実装が何であるのか」を質問しています。
>>279で Lo-Dash が forEach の先行実装かのように説明されていたので気になっていましたが、そういうわけでもないんですね。 <>
Name_Not_Found<>sage<>2014/05/10(土) 23:47:33.89 ID:???<> >>289
それ、実は難しい問題だよ。
何を数値とみなすのか。
たとえば、16進数表記は数値としてみなすのか?
指数表記は数値としてみなすのか?
無限大(Infinity)は数値としてみなすのか。
そこを答えてくれないかな? <>
Name_Not_Found<>sage<>2014/05/10(土) 23:47:53.22 ID:???<> >>289
「数値があるか」の定義が不明だけど、typeof hoge === 'number' でいいんじゃない? <>
Name_Not_Found<>sage<>2014/05/10(土) 23:49:30.85 ID:???<> しらんけどforEachはFirefoxが先行だとしても
それ以外はlodashが先行しているのが多いよ。
あ、underscoreが先行かもしれないね。 <>
Name_Not_Found<>sage<>2014/05/10(土) 23:51:34.88 ID:???<> 相変わらず、lodash信者は適当な事ばかりいう <>
Name_Not_Found<>sage<>2014/05/10(土) 23:53:53.96 ID:???<> そういやあのバカは
ちゃんとNGワードにしたんだろうか?
あ、このレス見えないようにlodashって入れておこうwww <>
284<>sage<>2014/05/10(土) 23:55:07.19 ID:???<> >>294
そうですか、わかりました。
参考までにお聞きしますが、lodashが先行している機能は何でしょうか? <>
Name_Not_Found<>sage<>2014/05/10(土) 23:56:35.61 ID:???<> >>297
ここに書いてるよ。
http://lodash.com/
Features not in Underscore <>
284<>sage<>2014/05/10(土) 23:59:54.13 ID:???<> >>298
"Features not in Underscore" は先行仕様の説明ではありませんが…。 <>
Name_Not_Found<>sage<>2014/05/11(日) 00:00:18.81 ID:???<> underscoreのコンセプトを深化させたのがlodash
今からわざわざunderscoreをする必要はないんじゃないかな? <>
Name_Not_Found<>sage<>2014/05/11(日) 00:01:59.17 ID:???<> >>299
Underscoreよりも先ってことは
先行って考えてあってるよ。
そこに書いてある機能は
JavaScritにない機能だから <>
284<>sage<>2014/05/11(日) 00:12:37.28 ID:???<> >>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 という仕様はありませんが、何を指すのでしょうか。 <>
Name_Not_Found<>sage<>2014/05/11(日) 00:17:32.01 ID:???<> 疑問に託けて荒らし弄って遊ぶのも良くないと思うの <>
Name_Not_Found<>sage<>2014/05/11(日) 00:35:24.69 ID:???<> setTimeout( function(){
〜処理〜
}.apply(this), 10);
//}.call(this), 10);
//}.bind(this), 10);
settimeoutの中ではthisにグローバルがセットされてしまうから
対策として、apply、call、bindのどれかを使おうと考えているのですが、
どれを使えばいいでしょうか?
この3つのメソッドって違いがよくわかりません。 <>
Name_Not_Found<>sage<>2014/05/11(日) 00:56:10.02 ID:???<> >>1-5のテンプレ更新した
http://jsfiddle.net/fH4cC/32/show/
>>209,211
反映した
>>212-214
反対意見があるようなので様子見
提案リストにあがっている
「質問の消化を最優先に。議論や雑談は禁止じゃないけど流れを見極めて。(※元は質問の体をしていても質問者を置き去りにして住人同士で議論や雑談になってきたときに冷静さを取り戻すためにも。自主的に我に返れなくても冷静な人に気付かせてもらうためにも。)」
は一考の余地があるかもしれないが、暫定保留 <>
Name_Not_Found<>sage<>2014/05/11(日) 01:15:23.28 ID:???<> lodashのデメリットはbackboneには使えないことかな?
と思ったけどbackboneでも使えるんだ
http://lodash.com/custom-builds
それならunderscoreを使う理由はないね <>
Name_Not_Found<>sage<>2014/05/11(日) 01:18:27.66 ID:???<> >>304
感覚的にはbindだが、背景が不明な状況で確かな事はいえない
3つの違いを理解できるまで使いこなしてから決めるのが最善だと思う <>
Name_Not_Found<>sage<>2014/05/11(日) 01:38:14.03 ID:???<> call=thisを指定して関数呼び出し出来る。引数を列挙させなくてはいけない。ES3でも可
apply=thisを指定して関数呼び出し出来る。引数を配列で渡せる。ES3でも可
bind=thisを指定する別の関数を生成。ES5以降
bindはコールバック関数を作る時に使う。ES3対応させたいならlodashを使えばいい。 <>
Name_Not_Found<>sage<>2014/05/11(日) 03:23:40.17 ID:???<> これはひどい。もうlodashをNGに入れざるをえないな。。。 <>
Name_Not_Found<>sage<>2014/05/11(日) 04:13:40.31 ID:???<> 勝手にそうしとけよw
アンチlodashの原始人どもは邪魔なだけだから <>
Name_Not_Found<>sage<>2014/05/11(日) 04:32:03.08 ID:???<> >>304
bind <>
Name_Not_Found<>sage<>2014/05/11(日) 04:35:18.09 ID:???<> document.getElementByIdを
jqueryでするのはどうやればいいですか? <>
Name_Not_Found<>sage<>2014/05/11(日) 05:05:59.97 ID:???<> >>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> <>
Name_Not_Found<>sage<>2014/05/11(日) 05:24:53.57 ID:???<> ありがとうございました <>
Name_Not_Found<>sage<>2014/05/11(日) 05:29:31.12 ID:???<> あるid要素の有無を知りたい時には
$('#'+id).length
を調べるのが普通ですか? <>
Name_Not_Found<>sage<>2014/05/11(日) 06:05:11.49 ID:???<> >>315
いいえ。#は不要です。 <>
Name_Not_Found<>sage<>2014/05/11(日) 06:19:48.09 ID:???<> testというidの要素を示すセレクターは
#test
ですよね? <>
Name_Not_Found<>sage<>2014/05/11(日) 06:47:20.09 ID:???<> >>317
そうですね。それは「id要素」ではありませんが。 <>
Name_Not_Found<>sage<>2014/05/11(日) 08:28:20.00 ID:???<> bindはIE9移行じゃないと使えない。 <>
Name_Not_Found<>sage<>2014/05/11(日) 08:45:20.36 ID:???<> lodashなら使えるよ <>
Name_Not_Found<>sage<>2014/05/11(日) 09:02:54.40 ID:???<> 素朴な疑問だけど、将来的にthisが呼び出し元に依存しないようになることってありえるのかな・・・? <>
Name_Not_Found<>sage<>2014/05/11(日) 09:18:18.66 ID:???<> アロー関数いいよね。
たとえばこんなコード(配列の各要素を3倍した配列を返す)が
_.map([1, 2, 3], function(num) { return num * 3; });
たったのこれだけになる。
_.map([1, 2, 3], num => num * 3); <>
Name_Not_Found<>sage<>2014/05/11(日) 09:20:44.68 ID:???<> >>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/ <>
304<>sage<>2014/05/11(日) 09:28:44.12 ID:???<> みなさまありがとうございます。
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); //捏造 <>
Name_Not_Found<>sage<>2014/05/11(日) 10:03:29.25 ID:???<> ゲーム制作などのサンプルコードをみていると
まるでパラパラ漫画のように一旦全ての要素を削除後、一から要素を構築というコードが多いのですが
要素を使いまわすことに何かデメリットでもあるのでしょうか? <>
Name_Not_Found<>sage<>2014/05/11(日) 11:19:35.05 ID:???<> >>325
そのサンプルコードが糞なだけじゃない?
デスクトップアプリ、一般のゲームアプリでは全部消してから
再描画するのは、ごく普通のやり方。
でもそれをDOMの世界に持ち込んでもだめだろう。
WebGLとかを使うなら、全部消して再描画でいいけどね。
たんにDOMを使ったゲーム作成に最適化されてないだけかと。 <>
Name_Not_Found<>sage<>2014/05/11(日) 13:25:38.30 ID:???<> >>318
「id要素」とは何? <>
Name_Not_Found<>sage<>2014/05/11(日) 13:40:27.42 ID:???<> JavaScriptは最初から関数が第一級オブジェクトの先鋭的な関数型プログラムができる言語と言える
ライブラリ使わなきゃ無理な訳じゃない <>
Name_Not_Found<>sage<>2014/05/11(日) 13:41:34.04 ID:???<> >>325
そのゲームは2Dか3Dのどっち? <>
Name_Not_Found<>sage<>2014/05/11(日) 13:45:28.06 ID:???<> >>292>>293
簡単なようで難しい問題だったんですか。プログラミングってのは難しいですな <>
Name_Not_Found<>sage<>2014/05/11(日) 14:08:24.52 ID:???<> >>328
いや、JavaScriptが関数型プログラムができる言語だから
関数型プログラミングに適したライブラリが出来たわけ。
このライブラリがなければ、自力実装しなきゃいけないよ? <>
Name_Not_Found<>sage<>2014/05/11(日) 14:09:01.77 ID:???<> ライブラリなんていらないだろ。
全部自分で作ればいいだけ。 <>
Name_Not_Found<>sage<>2014/05/11(日) 14:10:38.08 ID:???<> というか、if(!hoge && hoge!=0)が成立するのって何? <>
Name_Not_Found<>sage<>2014/05/11(日) 14:12:30.11 ID:???<> 面倒くさい書き方をするな。
if (hoge || hoge==0) でいいだろ <>
Name_Not_Found<>sage<>2014/05/11(日) 14:18:19.10 ID:???<> あ、割り込まれた
>>333 は >>330 へ <>
Name_Not_Found<>sage<>2014/05/11(日) 15:53:30.89 ID:???<> >>274
古いブラウザでも、動くんだろう
新しいブラウザなら、そのブラウザにあるforEachを使う
バグを減らして、開発コストを抑えるのが、目的 <>
Name_Not_Found<>sage<>2014/05/11(日) 17:04:55.19 ID:???<> >>335
レスアンカーつけるようにするといいよ <>
Name_Not_Found<>sage<>2014/05/11(日) 18:51:55.13 ID:???<> 数値で、なおかつ0より上ってことだろ?
だから>>334はおかしい <>
Name_Not_Found<>sage<>2014/05/11(日) 18:54:20.41 ID:???<> if (_.isNumber(val) && val > 0)
これでいいじゃん <>
Name_Not_Found<>sage<>2014/05/11(日) 20:11:36.94 ID:???<> 0より上なら
if (val > 0)
でいいじゃん
何で変な判定入れるの? <>
Name_Not_Found<>sage<>2014/05/11(日) 20:16:04.17 ID:???<> var a = true;
console.log((a>0));
これでもtrueになるから <>
Name_Not_Found<>sage<>2014/05/11(日) 21:22:56.27 ID:???<> ライブドアブログで記事をランダムに表示させています。
トップページからその機能を使うと問題ありませんが、個別記事ページからランダムで表示しようとすると
別のリンクに飛んでしまいます。 このようなものをライブドアブログのブログパーツのうちフリーエリアに追加しています。
<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はすべて確認しましたので、間違いないはずです。 <>
Name_Not_Found<>sage<>2014/05/11(日) 21:54:31.51 ID:???<> >>342
URLが相対指定だったりしない? <>
Name_Not_Found<>sage<>2014/05/11(日) 22:02:33.40 ID:???<> >>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> <>
Name_Not_Found<>sage<>2014/05/11(日) 22:09:48.66 ID:???<> おっと、このままじゃ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> <>
Name_Not_Found<>sage<>2014/05/11(日) 22:27:50.67 ID:???<> なんでaタグ内はダブルクォーテーションなのにimgタグ内はシングルクォーテーションなのですか <>
Name_Not_Found<>sage<>2014/05/11(日) 22:35:58.55 ID:???<> エスケープすんのがめんどくせーからだろ <>
Name_Not_Found<>sage<>2014/05/11(日) 23:34:28.08 ID:???<> 下のAタグはbodyタグ内のやつじゃないの?
あとこんな短いコードに二つもライブラリ
必要? <>
Name_Not_Found<>sage<>2014/05/11(日) 23:39:51.27 ID:???<> なにそれマジレス? <>
Name_Not_Found<>sage<>2014/05/11(日) 23:39:53.02 ID:???<> >>327
>>315に聞いて下さい。
言葉通りに受け取るならタイプセレクタを使います。 <>
Name_Not_Found<>sage<>2014/05/11(日) 23:41:42.23 ID:???<> >>301のレスがないけど、逃げたのかな <>
Name_Not_Found<>sage<>2014/05/12(月) 00:02:15.43 ID:???<> >>350
id要素という固有名詞なんてないのですから、指定のidの要素と分かるのでは?
固有名詞があるかのように言いだしたのはあなたなのに人になすりつけないで下さい <>
Name_Not_Found<>sage<>2014/05/12(月) 00:07:20.55 ID:???<> >>350
いや、>>315が言っている(思っている)id要素ってのは、>>317でわかるんだけど、
あなたがわざわざ「」付きで書いているから、別のそういう用語があるのかと思って
で、了解した。回答ありがとう <>
Name_Not_Found<>sage<>2014/05/12(月) 00:11:40.46 ID:???<> lodashでユーザ独自のプラグインを作ることは出来ないのでしょうか? <>
Name_Not_Found<>sage<>2014/05/12(月) 00:50:05.23 ID:???<> >>340
_.randomって普通にMath.random使えよ
マジ糞だな <>
Name_Not_Found<>sage<>2014/05/12(月) 00:50:59.22 ID:???<> 間違えた>>345だった <>
Name_Not_Found<>sage<>2014/05/12(月) 01:00:41.17 ID:???<> 狂信的lodashアンチの方が糞だろ
常識で考えて <>
Name_Not_Found<>sage<>2014/05/12(月) 01:03:15.54 ID:???<> http://jsperf.com/lodash-random-vs-math
ベンチマークではlodashの方が相当遅いな
同じ機能なら標準を使った方がいいか <>
Name_Not_Found<>sage<>2014/05/12(月) 01:08:01.53 ID:???<> parseIntは基数を書かなくていいのでlodashのを使っていますが
標準の方がいいと思う人いますか? <>
Name_Not_Found<>sage<>2014/05/12(月) 01:21:21.35 ID:???<> 標準がいいに決まってる <>
Name_Not_Found<>sage<>2014/05/12(月) 01:28:32.44 ID:???<> Note: This method avoids differences in native ES3 and ES5 parseInt implementations.
See http://es5.github.io/#E.
つまり互換性のためか
lodashを使っておいた方が間違いはないな <>
Name_Not_Found<>sage<>2014/05/12(月) 01:33:03.44 ID:???<> 効いてる効いてる <>
Name_Not_Found<>sage<>2014/05/12(月) 01:36:38.51 ID:???<> アンチ謎の効果あり宣言w
アンチは計測不能なほど小さいパフォーマンス改善のために
潜在的に危険なコードな放置しておけばいいんじゃないですかぁ? <>
Name_Not_Found<>sage<>2014/05/12(月) 01:43:13.77 ID:???<> >>354
普通にlodashオブジェクトにメソッド追加すれば出来るよ <>
Name_Not_Found<>sage<>2014/05/12(月) 01:44:47.55 ID:???<> >>354
一応記事見つけた
http://codemill.studio-connect.com/2013/03/more-lo-dash-utilities-using-_-mixin/ <>
Name_Not_Found<>sage<>2014/05/12(月) 01:51:54.67 ID:???<> >>364-365
mixinはそのためのものだったのですかー
ありがとうございます <>
Name_Not_Found<>sage<>2014/05/12(月) 02:05:31.79 ID:???<> 今日の対決ではlodashアンチの方が押され気味だねw
lodashに興味が湧いてきたよ <>
Name_Not_Found<>sage<>2014/05/12(月) 03:29:22.11 ID:???<> なあに、こっちは対決なんかしておらず
簡単に書ける方法を教えているだけよ。
それがたまたまlodashだったってだけで。 <>
Name_Not_Found<>sage<>2014/05/12(月) 04:10:00.71 ID:???<> _.mixin({
push: function(array,item){
array.push(item);
return array;
}
});
これだけでpushが追加できました
しかもメソッドチェーンにも対応していて
_([]).push('a').push('b').valueOf()
みたいな書き方も出来ます
lodash最高\(^o^)/ <>
Name_Not_Found<>sage<>2014/05/12(月) 04:15:29.06 ID:???<> ちなみに.push().push()するような場面はどのようなときにありますか <>
Name_Not_Found<>sage<>2014/05/12(月) 04:19:34.87 ID:???<> ただのサンプルだろう? <>
Name_Not_Found<>sage<>2014/05/12(月) 04:29:49.82 ID:???<> まさかテストコードに実用性を求められるとはw
今までpushやshiftしたい時はtapで関数を渡してたのでスッキリしました〜 <>
Name_Not_Found<>sage<>2014/05/12(月) 05:38:34.03 ID:???<> >>344
シングルクオートとダブルクオートが逆。 <>
Name_Not_Found<>sage<>2014/05/12(月) 05:45:06.05 ID:???<> >>373
はい? <>
Name_Not_Found<>sage<>2014/05/12(月) 05:51:56.18 ID:???<> lodashのメソッドは通常非破壊的なようです
var a = ['a','b','c'];
_(a).first(1);
console.log(a);//aには変化なし
_(a).push('d');
console.log(a);//aも変化している
破壊性と非破壊性に意識的になってないと思わぬトラブルになるかもしれません <>
Name_Not_Found<>sage<>2014/05/12(月) 06:10:56.75 ID:???<> >>375
ライブラリのくせに余計な気を使わせるとかゴミだな <>
Name_Not_Found<>sage<>2014/05/12(月) 06:16:08.90 ID:???<> いやpushなどは自分で追加したので、普通は気にする必要ないですよ? <>
Name_Not_Found<>sage<>2014/05/12(月) 07:01:12.35 ID:???<> pushすら無いのかよゴミだな <>
Name_Not_Found<>sage<>2014/05/12(月) 08:30:42.64 ID:???<> _.assignも破壊的なので、必ず非破壊的というわけではないですね
このあたりはまぁ普通のJSプログラミングでも意識する部分なので
lodashが最高なのは恒真ですが <>
Name_Not_Found<>sage<>2014/05/12(月) 08:35:35.58 ID:???<> 今日調べて分かったことを日記帳に書いたような、ドキュメントの例文レベルの議題と解決例を書き連ねて、このままスレが終わるのもアリかもね。
次スレからライブラリの話は禁止で。 <>
Name_Not_Found<>sage<>2014/05/12(月) 08:37:29.62 ID:???<> 自分に分からないことを書かれたからって拗ねるのはやめて下さいね
迷惑なので <>
Name_Not_Found<>sage<>2014/05/12(月) 08:49:03.47 ID:???<> 今の状況を見て今更疑問に思ったんだけど
このスレなんでID出るプログラム板じゃなくてWeb製作に立ってんの? <>
Name_Not_Found<>sage<>2014/05/12(月) 09:02:00.46 ID:???<> 「オブジェクトの指定した属性に指定した値を加算する」が出来る
標準関数はlodashにないですよね?
{
x:100,
y:-100
}
などを渡すと、x+=100, y+=-100をする、というようなものです <>
Name_Not_Found<>sage<>2014/05/12(月) 09:35:36.95 ID:???<> そりゃ必要ないからだろ <>
Name_Not_Found<>sage<>2014/05/12(月) 09:46:56.64 ID:???<> lodashで破壊的メソッドを実行する時、元オブジェクトは変えたくないのでクローニングしようと思い
_(a).clone().hoge()
とすると、cloneはチェーンに対応していないようでエラーが出ました。
なのでクローンしてラッパーオブジェクトを返すプラグインを追加し、
cloneのかわりにそれを使ったら、想定通りに動作しました。
動いたのでいいのですが、標準機能では同じことは出来ないのでしょうか? <>
Name_Not_Found<>sage<>2014/05/12(月) 11:17:04.69 ID:???<> mapがあるだろ
ライブラリに走る奴は標準機能をよく理解してない傾向がある <>
Name_Not_Found<>sage<>2014/05/12(月) 11:36:07.22 ID:???<> lなんとかに触るときはアンカつけてくれ
一緒に消えるから <>
Name_Not_Found<>sage<>2014/05/12(月) 12:01:51.33 ID:???<> >>353
一応、XHTMLであれば「id要素」を定義することが可能です。
括弧付で書いたのは「あなたの質問したid要素とは異なりますよ」と明示する為。
確かに意地悪な回答でしたが、不明瞭な質問(使用ライブラリを明示しない、id要素というオレオレ用語を使う)には端的な回答を返すことにしています。
過去に不明瞭な質問に憶測で回答して痛い目にあったことがあり、自己防衛のためです。
- 憶測で回答して間違っていた(初回回答時に確認すればよかった)
- 憶測で回答がよくないと思い、不明瞭な事項の確認を求めたところ、「〜に決まってますよね。わからないんですか?」と煽られた
相手にってはどう転んでも非難されるので、あの回答になりました。
ただ、>>353さんのように横で見ている人がわかりづらいのは申し訳ないと思っています。
内容を伴った指摘であれば回答する意思はあるので、お手数ですが、ご容赦下さい…。 <>
Name_Not_Found<>sage<>2014/05/12(月) 18:46:23.33 ID:???<> >>388
あなたの回答は必要ありませんので、
曖昧な質問だと思ったら今後はスルーして下さい
アスペ的な突っ込みを防ぐための言葉遣いは、今後もするつもりはありませんので。
人間の言葉は伸縮性があり、
伸縮性のある言葉を自在に使いこなす人間の知性を俺は信用しているのです
曖昧な言葉は、いわばアスペフィルタです
アスペの回答はいりませんので、スルーして下さい <>
Name_Not_Found<>sage<>2014/05/12(月) 18:48:58.34 ID:???<> >>389
気を害してしまったのなら申し訳なく思います。
人を傷つけるつもりは無かったので、今後は発言を控えます。 <>
353<>sage<>2014/05/12(月) 20:03:52.72 ID:???<> まーいいじゃん
変な質問はスルーってのは正しいとは思うけどね <>
Name_Not_Found<>sage<>2014/05/12(月) 20:50:04.08 ID:???<> delete演算子に()を付けていたのですが、これだと関数と間違えることがあるので
()を付けない方がいいのでしょうか? <>
Name_Not_Found<>sage<>2014/05/12(月) 20:59:45.13 ID:???<> >>375
> lodashのメソッドは通常非破壊的なようです
それは関数型言語的な考え方だよ。
細かい説明は端折るけど、関数型言語は原則的に
非破壊的な操作を行うためバグが減るとされている。 <>
Name_Not_Found<>sage<>2014/05/12(月) 21:02:23.07 ID:???<> >>392
つけない方がいい。
var value = (1) みたいで気持ち悪い。 <>
Name_Not_Found<>sage<>2014/05/12(月) 21:03:33.09 ID:???<> typeof も()つけないほうがよいですか? <>
Name_Not_Found<>sage<>2014/05/12(月) 21:07:56.52 ID:???<> >>394
ありがとうございました <>
Name_Not_Found<>sage<>2014/05/12(月) 21:12:14.02 ID:???<> ・つける理由がない。
・つけない理由がある。
・どちらでもいいなら省略した方が楽
これを満たしているのなら、明らかにつけるべきではない。 <>
Name_Not_Found<>sage<>2014/05/12(月) 21:53:00.84 ID:???<> ・けつげわっさわさ
・けつげわっさわさでなくない
・どちらでもいいならけつげわっさわっさが好き
これを満たしているのなら、明らかにけつげわっさわさ <>
388<><>2014/05/12(月) 22:59:53.63 ID:REvGzu8p<> >>390は私ではありません。
相手をするつもりはありませんが、自分の意図しない発言なので念の為。
idは出すべきでしたね…。気をつけます。 <>
Name_Not_Found<>sage<>2014/05/12(月) 23:13:23.40 ID:???<> ご愁傷様
>>1の (10) を見れない質問者が多いね <>
Name_Not_Found<>sage<>2014/05/12(月) 23:14:53.37 ID:???<> 殊勝なところがあると思ってこっちも心を痛めてたらw
安心しました <>
Name_Not_Found<>sage<>2014/05/12(月) 23:20:27.94 ID:???<> ところで、もう新スレがたってるのはなぜだろう?
正直、早すぎると思うのだが
http://toro.2ch.net/test/read.cgi/hp/1399764134/ <>
Name_Not_Found<>sage<>2014/05/12(月) 23:24:56.32 ID:???<> >>399
お前らの糞みたいなくだらないレスの投げ合いでスレが消費されるのは鬱陶しいから、
丸く収めようと思って謝っておいたんだから、のこのこ出てくんなよカスが <>
Name_Not_Found<>sage<>2014/05/12(月) 23:41:09.66 ID:???<> >>402
テンプレ修正されてないんだよな
後は察して欲しい <>
Name_Not_Found<>sage<>2014/05/12(月) 23:47:06.57 ID:???<> >>393
関数型言語の特徴として非破壊的だと見たことはあったものの、
使ったことがないのでピンと来ませんでしたが
実際に使ってみると良く分かりますね <>
Name_Not_Found<>sage<>2014/05/12(月) 23:53:24.30 ID:???<> >>395
演算子で括弧をつける必要があるのは優先順位を変更したい場合だけ
括弧の意味を考えれば他の演算子でもわかると思う <>
Name_Not_Found<>sage<>2014/05/13(火) 00:10:24.36 ID:???<> returnに括弧付ける奴の多い事よ。 <>
Name_Not_Found<>sage<>2014/05/13(火) 00:17:11.04 ID:???<> var a = {};
a.value = 'hogehoge';
a.hoge = function() { return this.value; }
a.fuga = 3;
みたいにfunctionのうしろだけセミコロンをつけないのはなぜですか <>
Name_Not_Found<>sage<>2014/05/13(火) 00:20:15.60 ID:???<> >>408
セミコロンはつける方が正しい <>
Name_Not_Found<>sage<>2014/05/13(火) 00:22:10.97 ID:???<> >>408
それは付けるべき <>
Name_Not_Found<>sage<>2014/05/13(火) 00:26:04.34 ID:???<> 他の言語やってれば、つけなければならないくらい分かるだろうに <>
Name_Not_Found<>sage<>2014/05/13(火) 00:37:51.33 ID:???<> >>408
俺の場合
1行→つける
複数行→つけない
みたいな感じでやってる <>
Name_Not_Found<>sage<>2014/05/13(火) 00:40:38.85 ID:???<> >>412
あなたの考え方を聞いているのではなく、なぜセミコロンをつけないのが一般的なのかを聞いております <>
Name_Not_Found<>sage<>2014/05/13(火) 00:48:42.76 ID:???<> var a ={};
var a ={a,b,c};
var a ={
a,
b,
c
}
あながち間違ってないかもその暗黙の了解ルール <>
Name_Not_Found<>sage<>2014/05/13(火) 00:51:59.22 ID:???<> 〜
b,
c
}a=1;
or
〜
b,
c
};a=1; <>
Name_Not_Found<>sage<>2014/05/13(火) 00:52:38.98 ID:???<> >>413
セミコロンはつけるのが一般的
君の認識が間違い <>
Name_Not_Found<>sage<>2014/05/13(火) 00:53:34.75 ID:???<> >>416
function() {
return this.value;
}
この場合はつけませんよね <>
Name_Not_Found<>sage<>2014/05/13(火) 00:54:42.27 ID:???<> JAVAではセミコロンがないとパースエラーになりますが、javascriptはならないのですね
言語使用が雑ですね <>
Name_Not_Found<>sage<>2014/05/13(火) 00:55:14.16 ID:???<> min化したときにセミコロン無しや/**/してないとうわぁっとなる問題はどうしたらいいですか <>
Name_Not_Found<>sage<>2014/05/13(火) 00:56:04.51 ID:???<> >>417
その場合は付けなくて言い
>>408は付けるべき
>>414も付けるべき <>
Name_Not_Found<>sage<>2014/05/13(火) 00:58:34.17 ID:???<> >>417
SyntaxError なのでそれ以前の問題 <>
Name_Not_Found<>sage<>2014/05/13(火) 01:00:12.05 ID:???<> セミコロンを省略すると発見しにくいバグが生じる例を
どこかで見たことがある
基本的に付けても無害なので
>>417 のような例だろうが何も考えずに付けた方がいいとも言える <>
Name_Not_Found<>sage<>2014/05/13(火) 01:08:11.75 ID:???<> Rubyでは付けないのが普通らしい。
だけど付けないと変な解釈をすることが有るってのは
やっぱり有るらしい。 <>
Name_Not_Found<>sage<>2014/05/13(火) 01:33:54.51 ID:???<> function () {}
と
var a = function () {};
は別物。上は関数宣言、下は関数式。宣言には付けない、式には付ける。 <>
Name_Not_Found<>sage<>2014/05/13(火) 01:37:15.02 ID:???<> たしかに複数行の式だと忘れやすいけど
jshint入れたら解決 <>
Name_Not_Found<>sage<>2014/05/13(火) 01:42:10.58 ID:???<> if(a==hoge){}
には、セミコロンはつけませんね <>
Name_Not_Found<>sage<>2014/05/13(火) 01:44:57.98 ID:???<> ExpressionとStatementの違いが分かりません <>
Name_Not_Found<>sage<>2014/05/13(火) 01:45:22.30 ID:???<> >>426
それは文
式と文と宣言は区別すべき <>
Name_Not_Found<>sage<>2014/05/13(火) 01:49:41.26 ID:???<> 文と宣言に違いはあるのですか? <>
Name_Not_Found<>sage<>2014/05/13(火) 01:53:43.57 ID:???<> 関数宣言(function文)は文に含まれる <>
Name_Not_Found<>sage<>2014/05/13(火) 01:58:23.48 ID:???<> それなら、式と文は区別すべきでよいのではないでしょうか? <>
Name_Not_Found<>sage<>2014/05/13(火) 02:02:31.70 ID:???<> >>430
FunctionDeclaration と Statement は別物
function 文は存在しない <>
Name_Not_Found<>sage<>2014/05/13(火) 02:05:46.70 ID:???<> a();
function a() {}
これはエラーにならない。
a();
var a = function () {};
これはエラーになる。
a=1;
function a() {}
a();
これもエラーになる。 <>
Name_Not_Found<>sage<>2014/05/13(火) 02:28:41.69 ID:???<> 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" <>
Name_Not_Found<>sage<>2014/05/13(火) 05:18:59.79 ID:???<> lodashで、reduceなどのコールバック関数中に、
そこで使う変数を送り込みたい時はどうするのがベストなのでしょうか
今は外のスコープに書いてクロージャの形にしてますが、
これは関数言語的じゃないように思います <>
Name_Not_Found<>sage<>2014/05/13(火) 06:15:24.49 ID:???<> >>435
無名関数の中に実行したい関数を入れる
array.reduce(function() { <>
Name_Not_Found<>sage<>2014/05/13(火) 06:26:06.44 ID:???<> >>435
途中で送信してしまった
1.無名関数の中に実行したい関数を入れる
array.reduce(function() {
func(引数)//実行したい関数
})
2.関数を返す即時関数の引数を使う
array.reduce((function(仮引数) {
return function() {
//処理
}
})(実引数) <>
Name_Not_Found<>sage<>2014/05/13(火) 09:40:33.28 ID:???<> >>403
うぜえ <>
Name_Not_Found<>sage<>2014/05/13(火) 09:50:37.46 ID:???<> セミコロンの自動挿入は意図がよくわからないな
混乱するだけだと思うんだけど <>
Name_Not_Found<>sage<>2014/05/13(火) 14:22:00.57 ID:???<> >>437
なるほど
即時関数はよさそうです!
ありがとうございました <>
Name_Not_Found<>sage<>2014/05/13(火) 21:53:07.63 ID:???<> ループしながら判定してヒットした時点でループを抜ける
という処理がありますが、関数言語的ループの場合は例外を投げて外に出すのでしょうか? <>
Name_Not_Found<>sage<>2014/05/13(火) 22:43:10.66 ID:???<> lodashではfalseを返せばループは終わらせられるようです
メソッドチェーンを中断させる機構があれば尚いいのですが・・ <>
Name_Not_Found<>sage<>2014/05/13(火) 22:49:36.46 ID:???<> なんか最近ココでlodashって単語よく見かけるんですが
流行してるんですか? <>
Name_Not_Found<>sage<>2014/05/13(火) 23:04:48.99 ID:???<> >>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
触らない方がいい <>
Name_Not_Found<>sage<>2014/05/13(火) 23:10:04.00 ID:???<> 444はないなぁ <>
Name_Not_Found<>sage<>2014/05/13(火) 23:13:03.78 ID:???<> >>444
もしかして、あんた、アンチlodashの
うるさい人?
ちょっとそのコード見て、馬鹿にしたくなったんで
アンチlodashとイコールならレベル低すぎで面白いなぁとw <>
Name_Not_Found<>sage<>2014/05/13(火) 23:22:04.63 ID:???<> >>443
他の人は知りませんが、少なくとも俺の中では流行ってますよ^^
オブジェクト指向以来のインパクトです <>
Name_Not_Found<>sage<>2014/05/13(火) 23:24:21.92 ID:???<> 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付けて、配列で引数を渡して
関数型で縛るとこうなるだろ?ようするに面倒なんだよ <>
Name_Not_Found<>sage<>2014/05/13(火) 23:26:09.59 ID:???<> 偉そうなわりにコードが汚いw
これがアンチlodashの正体かって
思うと笑えてくる。 <>
Name_Not_Found<>sage<>2014/05/13(火) 23:28:10.47 ID:???<> lodash使ってもいない人がメソッドチェーンの中断などというテクニカルな話題で
まともなアイデアを出せるわけないしw <>
Name_Not_Found<>sage<>2014/05/13(火) 23:29:13.00 ID:???<> テクニカルwwww
皮肉かwww <>
Name_Not_Found<>sage<>2014/05/13(火) 23:29:17.57 ID:???<> >>447
勘違いをしているようだが、関数型言語というのはオブジェクト指向よりも古い。そして不便。
その証拠に関数型を謳っている某ライブラリでも破壊的な非関数型メソッドがいくつも入っている。
ループ抜けるのにfalse返さないといけなかったら、関数型だとfalseしか返ってこないよねw <>
Name_Not_Found<>sage<>2014/05/13(火) 23:35:37.24 ID:???<> >>442
メソッドチェーンを中断させるのなら、例外しか無いんじゃね?
var value = _(v).foo().bar().baz();
のfoo()で中断させる場合、例外を出さないなら
[なんかのオブジェクト].bar() は絶対実行されるから、
それでvalueにundefinedを入れるようにするとなると、
「なんかのオブジェクト」は、メソッドチェーンできるオブジェクトでありながら、
barやbazを何をやってもundefined相当のオブジェクトを返すメソッドに
すり替えないといけないわけで、出来ないことはない気もするけど
そうとう無駄なことやる羽目になりそう。 <>
Name_Not_Found<>sage<>2014/05/13(火) 23:48:19.47 ID:???<> >>442
> lodashではfalseを返せばループは終わらせられるようです
> メソッドチェーンを中断させる機構があれば尚いいのですが・・
中断の意味が二通りある。
一つは、処理が続行できなくなって中断する場合(戻り値なし)と、
もう一つは、これ以上処理する必要がないので処理を切り上げる場合(戻り値あり)
前者は例外を使う。
後者は、処理を切り上げることを意味する値を返す。
falseだったり、nullだったり、undefinedだったり、
この三つのどれかを処理を切り上げる値に使えばいいと思うけど、
無理なら例外を使ってもいいと思うし、特別なオブジェクトを返すとかもある。
asyncライブラリみたいに、引数にcallbackを渡してどう呼び出すかで
続きをやるかどうか判定するなんてのも考えられるよ。
http://qiita.com/takeharu/items/84ffbee23b8edcbb2e21
一般的な方法ってのは無いと思う。 <>
Name_Not_Found<>sage<>2014/05/13(火) 23:48:57.26 ID:???<> 「関数言語的ループ」って再帰ループのことだと思ったんだが違ったのか?
メソッドチェーンの中断の話?どこで掏り替わったんだ? <>
Name_Not_Found<>sage<>2014/05/13(火) 23:52:33.05 ID:???<> >>442の時点で二つの話がごっちゃになってるのです。 <>
Name_Not_Found<>sage<>2014/05/13(火) 23:58:17.84 ID:???<> >>452
勘違いしてないよw
時代的な並列処理の要請と、あとおそらく「伽藍とバザール」から、
古い関数型言語の見直しが何年か前にあって、
新しい関数型言語が生まれたり、関数型言語のパラダイムが既存の言語に流入してきた
この新しい流れのことを言ってるんだよ <>
Name_Not_Found<>sage<>2014/05/13(火) 23:59:48.44 ID:???<> >>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 <>
Name_Not_Found<>sage<>2014/05/14(水) 00:06:50.28 ID:???<> >>458
少しはましになったけど、引数dが余計だね。
もし仮にIDEを使っていて、関数の仮引数を表示してくれるとしたら
気持ち悪いよね。ということで消してみて。
あと意味なく一文字変数にしない。
わかりにくいから。 <>
Name_Not_Found<>sage<>2014/05/14(水) 00:07:09.19 ID:???<> やはり例外しかないでしょうかね〜
うまく呼び出し部分をラップして特別なオブジェクトを返したら中断するとか出来そうな気もするのですが <>
Name_Not_Found<>sage<>2014/05/14(水) 00:10:11.77 ID:???<> >>458
dが消えてから指摘しようと思ったけど、
面倒なので私的。
元々の質問者は、その例で
exec,judgmentの二つに分けたくない場合の
話をしてるんだよ。 <>
Name_Not_Found<>sage<>2014/05/14(水) 00:12:51.84 ID:???<> あと関数型なら、iというインデックスを使わずに
「残りの引数」って感じで渡す気もするんだけど、
まあそこはいいのかな。残りの引数を使う正当な理由が思いつかないし。 <>
Name_Not_Found<>sage<>2014/05/14(水) 00:36:14.59 ID:???<> 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しか返せないだろうに。
そんな縛りをする意味がない。 <>
Name_Not_Found<>sage<>2014/05/14(水) 00:40:48.12 ID:???<> 質問者がコードを出さないから具体案が出てきづらい事になる
初めからこうなることは明白だった <>
Name_Not_Found<>sage<>2014/05/14(水) 00:48:38.06 ID:???<> >>342
document.write("<a href='"+article[n]+"'>");
これは、ファイル名だけ?
それなら、相対パスになる
var artDir = "http://www.〜.〜/"
記事が入っているフォルダのパスを、変数に入れておいて、
ファイル名と連結して、絶対パスで指定する
配列の宣言は、単に下のように書ける
var article = new Array();
var article = []; <>
Name_Not_Found<>sage<>2014/05/14(水) 00:59:55.16 ID:???<> にわか関数型野郎はhaskellスレにでも行って打ちのめされてこい
そして二度と来るな <>
Name_Not_Found<>sage<>2014/05/14(水) 01:08:20.37 ID:???<> >>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;
}); <>
Name_Not_Found<>sage<>2014/05/14(水) 01:11:35.48 ID:???<> 訂正
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;
}); <>
Name_Not_Found<>sage<>2014/05/14(水) 03:13:29.33 ID:???<> 即時関数をapplyで呼ぶというウルテクを見つけました
(function (a){
console.log(a);
}.apply(this,['x']));
これは普通に使っていい技でしょうか? <>
Name_Not_Found<>sage<>2014/05/14(水) 07:04:33.24 ID:???<> 存在しないdom要素のjqueryオブジェクトを生成した後、
そのdom要素を作成しても、
先に作ったjqueryオブジェクトを使って操作することは出来ません。
作成済みのjqueryオブジェクトに現在のdomの状況を反映させるにはどうしたらいいでしょうか? <>
Name_Not_Found<>sage<>2014/05/14(水) 09:58:14.14 ID:???<> https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/try...catch
ここに
catch (e if e instanceof EvalError)
のような書き方が載っていますが、
注: この機能は ECMAScript 仕様の一部ではありません。
と書いてあります。
このような形でキャッチするエラーを指定出来ない場合もあるということでしょうか? <>
Name_Not_Found<>sage<>2014/05/14(水) 10:16:15.13 ID:???<> >>471
> 注: この機能は ECMAScript 仕様の一部ではありません。
実装依存という事です。
全ての実装で実装されている保証がありませんし、今後削除される可能性もあります。
対象ブラウザ全てで実装されていることを確かめる必要がありますし、今後更新される度に該当機能が削除されていないか確かめる必要があります。 <>
Name_Not_Found<>sage<>2014/05/14(水) 10:29:20.29 ID:???<> ありがとうございます
あまり使わない方が良さそうですね
欲しいエラーではない場合、再びthrowする
という判定処理を書くのがいいでしょうか? <>
Name_Not_Found<>sage<>2014/05/14(水) 17:30:40.15 ID:???<> ontouchstartってスマホ用のイベントだとおもいますが、
これをPCで閲覧した時にも記述することってやっぱりよくないことですか? <>
Name_Not_Found<>sage<>2014/05/14(水) 20:47:22.25 ID:???<> C++の int operator()() {...} みたいなメソッドは書けますか?
クラスインスタンスを関数のように使いたいのです。
function Foo() { .. }
var obj = new Foo();
obj(); /* 関数としてコールしたい */
ttp://ideone.com/zRugbf <>
Name_Not_Found<>sage<>2014/05/14(水) 21:19:28.41 ID:???<> 残念ながら出来ません <>
Name_Not_Found<>sage<>2014/05/14(水) 21:38:47.51 ID:???<> >>475
こういうこと?
function Foo() {
function bar() {
console.log('a');
}
return bar;
}
var obj = new Foo();
obj(); // a <>
Name_Not_Found<>sage<>2014/05/14(水) 22:09:20.64 ID:???<> >>477
クロージャーではなくprotptypeでなんとか出来ないのかと思いまして。
>>476
そうかぁ、出来ないのですね。
ありがとん。 <>
Name_Not_Found<>sage<>2014/05/14(水) 22:09:44.46 ID:???<> javascriptがflashに大勝利するにはどうすればいいと思いますか
ぼくはソースの暗号化が肝だと思うのですが <>
Name_Not_Found<>sage<>2014/05/14(水) 22:40:43.36 ID:???<> 意味不明
flashなんてもうオワコンじゃん <>
Name_Not_Found<>sage<>2014/05/14(水) 22:59:08.50 ID:???<> >>474
PCかスマホかなんて忘れた方がいい。
あるのは画面の大きさぐらい。
タッチ装置がついててブラウザが対応していたら、
ontouchstartが使われる。そうでなければ使われない。
スマホかどうかは関係ない。 <>
Name_Not_Found<>sage<>2014/05/14(水) 23:03:24.73 ID:???<> >>479
ソースの暗号化なんて、誰もほしがってなんかいない。 <>
Name_Not_Found<>sage<>2014/05/14(水) 23:33:36.97 ID:???<> >>481
ありがとうございました! <>
Name_Not_Found<>sage<>2014/05/14(水) 23:44:31.78 ID:???<> >>478
function f() {
console.log(this.a);
}
var o = {
a: 1
},
obj = f.bind(o);
obj(); // 1
o.a = 2;
obj(); // 2
bind使えばこう書けるが。 <>
Name_Not_Found<>sage<>2014/05/15(木) 02:16:43.78 ID:???<> >>470
jQueryの質問は下記へ
【jQuery】JavaScript ライブラリ総合質問所 vol.3
ttp://toro.2ch.net/test/read.cgi/hp/1369444026/l50 <>
Name_Not_Found<>sage<>2014/05/15(木) 03:04:36.19 ID:???<> >>473
try-catch のcatch節でthrowするという意味なら普通はあまりやりません。
標準の例外を吸収しておいて別の例外を発生させるのは特異なケースですが、背景が不明なのでそれが正しいのかは何ともいえません。
普通は標準の例外を見越して、例外が発生しないようにコーディングするので、try-catch は滅多に使いません。
もし、「例外の発生条件がよくわからないのでとりあえず、try-catchで括る」という考え方なら良くない手法だと思います。 <>
Name_Not_Found<>sage<>2014/05/15(木) 03:30:15.84 ID:???<> lodashで、変数でキー名を指定してオブジェクトに値を設定したい場合は
自分でプラグインを作成するしかないでしょうか?
assignの引数はオブジェクトにしか対応していないようです
jqueryのように
assign(key, value)
というような形でも指定できたら一番いいのですが <>
Name_Not_Found<>sage<>2014/05/15(木) 03:42:14.59 ID:???<> >>485
なんでlodashについては何も言わないんだ <>
Name_Not_Found<>sage<>2014/05/15(木) 03:49:46.50 ID:???<> そもそも、JSでメンバへの代入をメソッドで出来るべきでは?
{a:1}.set('b',2)
みたいな感じで <>
Name_Not_Found<>sage<>2014/05/15(木) 08:32:19.05 ID:???<> jsでhtmlのエレメントを取得し、属性値を設定します。例えばidとか。
この時、自動的にnameにも同じ値が設定すされるようにする。
みたいな仕組みを作ることは可能でしょうか? <>
Name_Not_Found<>sage<>2014/05/15(木) 08:36:22.23 ID:???<> チェックボックスにidと同じname属性を付けたいのだと思うが、 <>
Name_Not_Found<>sage<>2014/05/15(木) 08:42:59.38 ID:???<> しまった、途中でカキコしてしまったw
jQueryが使えるなら、
$('input[type=checkbox]).each(function(){$(this).arrt("name", this.id)});
でどうでしょうか? <>
Name_Not_Found<>sage<>2014/05/15(木) 10:09:28.92 ID:???<> .arrt → .attrじゃないか
あと、idにattrしてかつnameにもattrしたい
ということだろうたぶん <>
Name_Not_Found<>sage<>2014/05/15(木) 10:14:28.98 ID:???<> PCでスマホサイトの動作を確認したいんですが、
Useragentを書き換えるだけじゃなくて、スマホ特有のイベントontouch系を発生させるツールとかないですか? <>
Name_Not_Found<>sage<>2014/05/15(木) 10:49:09.58 ID:???<> >>494
エミュレータを使えばいいのでは?
最終的には実機で確認する必要がありますが <>
Name_Not_Found<>sage<>2014/05/15(木) 11:36:03.67 ID:???<> >>490
もう少し具体的に。
要素と文字列を受け取って、idとnameとに設定する関数を作る
っていうのでも仕組みって言えば仕組みだよね
jQueryで$('.foo').setIdAndName('foobar') みたいな感じでしたければ、
そういうプラグインを書けばいいし <>
485<>sage<>2014/05/15(木) 14:54:19.72 ID:???<> >>488
あっちのスレは、jQueryだけじゃなかったのか
ライブラリ総合か
それなら、Lo-Dashの話もあっちで
次から、スレタイも変えないと
【jQuery】JavaScript ライブラリ総合質問所 vol.3【Lo-Dash】 <>
Name_Not_Found<>sage<>2014/05/15(木) 14:56:14.61 ID:???<> まあ>>488も分かってて言ってるんだろうけど
jQuery他をこっちで聞いてるのはライブラリスレを知らないだけ
lodashをこっちで聞いてるのは意図的な荒らしと自演レス <>
Name_Not_Found<>sage<>2014/05/15(木) 16:54:27.09 ID:???<> >>497
そのタイトルだとあなたと同じようにjQuery, Lo-Dashスレと勘違いされるから、特定のライブラリ名はタイトルに含めるべきではないと思う <>
Name_Not_Found<>sage<>2014/05/15(木) 17:01:42.99 ID:h7oaYySD<> でもJQueryも有名だしJQuery等でいいんじゃないか
どっちにしても向こうのスレで話し合えば良いと思うが <>
Name_Not_Found<>sage<>2014/05/15(木) 19:09:09.31 ID:???<> >>494
chromeのDeveloper toolでできる <>
490<>sage<>2014/05/15(木) 19:24:33.83 ID:???<> >>491-493>>496
現状jQuery使ってないので、新たな技術要素を増やすのは、できれば避けたいです。絶対ではないけど。
やりたいことは、例えばreadonlyとdisabledはについて、いずれか一方がtrueならもう一方は必ずfalseにしたいという具合に、排他的に設定するルールだとします。
この時、
xxx.readOnly=true;
xxx.disabled=false;
と書くのではなく
xxx.readOnly=true;
とだけ書けば、disabledも勝手にfalseになってくれる。そんな仕組みを作りたい。
C#なんかでいうと、プロパティの中にロジックを書くような事が出来れば良いのかなと思ってます。
jsにはprototypeとかあるので、その辺うまく使えば出来たりするんかなーと。 <>
Name_Not_Found<>sage<>2014/05/15(木) 19:43:35.94 ID:???<> 荒らしじゃねーよカス
ライブラリスレでjsの話をするのはおかしいが
jsスレでライブラリの話するのは何もおかしくない
うざい自治厨がスレを分けただけの話
つまりどっちに書いてもいい <>
Name_Not_Found<>sage<>2014/05/15(木) 20:21:40.74 ID:???<> >>502
Object.defineProperty でプロパティの変更をハンドリングするといいんじゃない?
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty <>
Name_Not_Found<>sage<>2014/05/15(木) 20:41:19.91 ID:???<> >>501
できました!
さすがグーグル神! <>
Name_Not_Found<>sage<>2014/05/15(木) 22:28:24.19 ID:???<> lodashの関数型プログラミングに慣れるとスコープが無駄に広い変数にイライラするね
どこで使われているか一目で分からない変数とかあり得ないだろ <>
Name_Not_Found<>sage<>2014/05/15(木) 23:02:16.75 ID:???<> >>502
ウェブ製作者必須の技術でjQueryを作ると、
簡単にできるということを知っておいて。
簡単に早く不具合がなく品質の高いものを作ろうとするのなら、
技術を身につけるべきだということを知っておいて。
自分独自の面倒な仕組みを作りたいというなら、その理由がマイナス、
つまり勉強したくない、自分の知ってることだけでやりたいだったら、
なにも成長しないということを理解しておいて。
その上でやりたいのならどうぞ。
じゃあjQueryだったら簡単にできるというコード。
var state1 = {readonly: true, disabled: false};
var state2 = {readonly: false, disabled: true};
$('.test').prop(stete1); // classがtestの項目 "全て" をstate1に変更 <>
Name_Not_Found<>sage<>2014/05/15(木) 23:05:10.78 ID:???<> 視野が狭い奴ってレベルの低い話をドヤ顔で語っちゃうんだよねw <>
Name_Not_Found<>sage<>2014/05/15(木) 23:08:47.34 ID:???<> ※ いま>>508がドヤ顔しています <>
Name_Not_Found<>sage<>2014/05/15(木) 23:27:22.19 ID:???<> この場合、質問者が求めているのは>>504みたいなのであって、
>>507は質問に対して的外れ過ぎだろ <>
Name_Not_Found<>sage<>2014/05/15(木) 23:29:07.31 ID:???<> 無能なやつほど偉そうにしたがるんだよな <>
Name_Not_Found<>sage<>2014/05/15(木) 23:32:30.20 ID:???<> >>511
お前偉そうだな <>
Name_Not_Found<>sage<>2014/05/15(木) 23:33:52.29 ID:???<> 「プログラマーに向いてない」とか「成長しない」とか「スレ違い」とか言う奴はだいたいクズ <>
Name_Not_Found<>sage<>2014/05/15(木) 23:49:56.85 ID:???<> >>513
お前は、言う奴じゃなくて、言われる奴だから
大丈夫だねw <>
Name_Not_Found<>sage<>2014/05/16(金) 01:33:03.32 ID:???<> 無能なやつが他人に偉そうにしたいと思ったら規則を作り出す
規則への従順さを議題にする限り、能力が問われることはないから。
自民党がやろうとしているのも根源的にはそういうこと。
現在日本で進行しているのは、まさに無能者によるテロリズムだ。 <>
Name_Not_Found<>sage<>2014/05/16(金) 01:42:54.20 ID:???<> この手のネット特有の現実批判しかできない奴って、考えるのが技術であることを知らないんだろうな
みんな借り物の言葉だもんな <>
Name_Not_Found<>sage<>2014/05/16(金) 01:51:37.19 ID:???<> 外部ライブラリを導入したくない理由なんかいくらでもあるだろうに・・・
自分の中だけで勝手に妄想膨らませて語っちゃう奴っているよなw <>
Name_Not_Found<>sage<>2014/05/16(金) 02:02:39.69 ID:???<> 借り物の言葉で自分に酔えるというのは、ある意味才能だと思うよ <>
Name_Not_Found<>sage<>2014/05/16(金) 02:21:16.32 ID:???<> >>516
それは単にお前がいつも言われてることだろw
こんなことを言っている書き込みがあったら持って来いよ
カスが <>
Name_Not_Found<>sage<>2014/05/16(金) 02:24:08.46 ID:???<> アホは批判すらマトモに出来ないから、
かつて自分が言われた批判を間違ったタイミングで取り出してくるよな
お前が言われた言葉はお前にぴったりなんだから
自動追尾でお前にぶつかって行くに決まってんだろ
カスが <>
Name_Not_Found<>sage<>2014/05/16(金) 02:28:41.83 ID:???<> よほど図星だったみたいで、一回レスしただけじゃ気持ちがおさまらなかったんですねw <>
Name_Not_Found<>sage<>2014/05/16(金) 02:30:17.51 ID:???<> 単に教えてあげただけだよ
もともと怒ってもないし <>
Name_Not_Found<>sage<>2014/05/16(金) 02:36:48.03 ID:???<> 私も教えてあげますが、怒ってない人はカスがカスがなんて繰り返さないものですよw
それは沸点の低い証拠です <>
Name_Not_Found<>sage<>2014/05/16(金) 02:40:39.79 ID:???<> そうですか
ありがとうございました <>
Name_Not_Found<>sage<>2014/05/16(金) 02:48:17.86 ID:???<> 自分の気持ちをコントロールできるようになれば、少しは冷静に自分の頭でものを考えられるようになると思いますよ <>
Name_Not_Found<>sage<>2014/05/16(金) 03:00:18.19 ID:???<> 考えすぎかもしれんが、>>507の回答見る限り、
成長できないのはこいつ自身な気がしてきた。 <>
Name_Not_Found<>sage<>2014/05/16(金) 03:09:53.57 ID:???<> >>526
なんでそんなどうでもいいレスしたいの?
したくなったの? <>
Name_Not_Found<>sage<>2014/05/16(金) 04:02:30.50 ID:???<> 別に考えすぎじゃないだろw <>
Name_Not_Found<>sage<>2014/05/16(金) 04:06:01.64 ID:???<> >>502
こんな感じかね? http://ideone.com/lOV8Pa <>
Name_Not_Found<>sage<>2014/05/16(金) 06:08:06.94 ID:???<> catchブロックのeを宣言せずに使えるのは何故ですか? <>
490<>sage<>2014/05/16(金) 09:22:22.30 ID:???<> >>504>>529
おっ、これは面白い。これは知らなかったです。
ecmascriptの仕様なら標準技術といえるし、
サポート対象環境で動きそうなら、検討させていただきます。
ありがとうございました。
>>507
jQueryを使うという選択をしたならば、そういうやり方もありですね。 <>
Name_Not_Found<>sage<>2014/05/16(金) 17:35:37.41 ID:???<> 桁が大きすぎて3.5345345345346564e+23みたいな値同士を比較しても正しい結果になりません
これはしょうがないことですか?
あとこういうe+23みたいなのがくっついてしまったかどうかを判定する方法はありませんか? <>
Name_Not_Found<>sage<>2014/05/16(金) 17:51:15.52 ID:???<> >>532
最大どこまで扱うのかしら無いけど、JavaScriptネイティブで
扱える範囲を超えているからどうしようもの無い。
何かしらのライブラリを使うしか無いね。BigIntとかのキーワードで検索できる。
このスレにはライブラリの話をするとうるさい奴がいるから注意してね。
スレ違いではないから問題ない。軽く無視しよう。 <>
Name_Not_Found<>sage<>2014/05/16(金) 18:26:58.59 ID:???<> parseFloatを通して比較すればどうかな?
if (parseFloat(a) > parseFloat(b)) { ... }
指数表記が有るかは、if (a.search(/e/)>0) {...} で判定。
正攻法はBigIntだろうね。 <>
Name_Not_Found<>sage<>2014/05/16(金) 19:43:04.45 ID:???<> >>532
ES6 だけど Number.MAX_SAFE_INTEGER と比較すれば安全な整数値か判定できる
静的プロパティだから、なければ作ればいい
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer <>
Name_Not_Found<>sage<>2014/05/16(金) 20:07:40.20 ID:???<> es6なんて使えないんだから意味なくね
自分一人で動かすプログラムならともかく <>
Name_Not_Found<>sage<>2014/05/16(金) 20:12:38.50 ID:???<> >>536
だから「なければ作ればいい」といっているのだが <>
Name_Not_Found<>sage<>2014/05/16(金) 20:15:25.81 ID:???<> じゃES6の話なんてすんなよ <>
Name_Not_Found<>sage<>2014/05/16(金) 20:19:33.78 ID:???<> 知ってれば将来の互換性を確保出来る <>
Name_Not_Found<>sage<>2014/05/16(金) 20:19:57.21 ID:???<> >>538
Number.MAX_SAFE_INTEGER は Google Chrome, Firefox で使える
ES6 が使えないわけじゃない <>
Name_Not_Found<>sage<>2014/05/16(金) 20:21:09.20 ID:???<> >>5のtableを見れば、使えるか使えないかぐらいわかっただろうに
http://kangax.github.io/compat-table/es6/ <>
Name_Not_Found<>sage<>2014/05/16(金) 20:50:00.02 ID:???<> >>532
よくみたら有限数の限界を超えていたので訂正
Number.MAX_VALUE と比較してやればいい
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_value
ただ、そもそも不動点少数演算になっている時点で誤差が生じるのだが、軽微な誤差は問題ないのだろうか… <>
Name_Not_Found<>sage<>2014/05/16(金) 20:52:27.69 ID:???<> おちつけ <>
Name_Not_Found<>sage<>2014/05/16(金) 21:19:30.52 ID:???<> 始めのBigIntでミスリードしたことを踏まえると、全員間違ってたんだな… <>
Name_Not_Found<>sage<>2014/05/16(金) 22:03:31.61 ID:???<> lodashで何とかできるんじゃね? <>
Name_Not_Found<>sage<>2014/05/16(金) 22:08:18.71 ID:???<> >>545
具体的なコードを教えてください <>
Name_Not_Found<>sage<>2014/05/16(金) 22:10:08.23 ID:???<> ふと思ったのですが、Int64 を標準化した仕様はないのでしょうか?
探してみたのですが、探し方が悪いのか該当仕様が見つかりませんでした <>
Name_Not_Found<>sage<>2014/05/16(金) 22:18:19.23 ID:???<> >>503
まあ、その質問が増えてきたなら、啓蒙ができたって事で専用スレでやっていいな
ま、ライブラリ専用もあるし <>
Name_Not_Found<>sage<>2014/05/16(金) 22:23:07.07 ID:???<> int64を扱うライブラリがあったような記憶が <>
Name_Not_Found<>sage<>2014/05/16(金) 22:25:41.81 ID:???<> 32ビットでじゅうぶんですよ。
32ビットでじゅうぶんですよ。
分かってくださいよ! <>
Name_Not_Found<><>2014/05/16(金) 22:34:42.83 ID:6hsl02bR<> xmlHttpReques2でクロスオリジン通信できるようになったけど
結局サーバー側のheaderで許可しないといけないならどういう時に使うんだろう
誰かが公開してるAPI扱う時くらい? <>
Name_Not_Found<>sage<>2014/05/16(金) 22:45:13.52 ID:???<> var i = 5;
for (var j = 0; j < i / 3; ++j) { console.log(j); }
=> 0
=> 1
JavaScirptは糞でした
ありがとうございました <>
Name_Not_Found<>sage<>2014/05/16(金) 22:46:28.47 ID:???<> >>551
自分が管理する他ドメインとの通信とか
そもそも、あれは他ドメインサーバのデータを無許可に取得できるようにする為の仕組みじゃない <>
Name_Not_Found<>sage<>2014/05/16(金) 23:15:04.85 ID:???<> >>552
? <>
547<><>2014/05/16(金) 23:35:03.73 ID:9YSJ/oxP<> >>549
ライブラリではなく、標準化された仕様はないのでしょうか
なければ、せめて各ブラウザで独自実装した仕様があれば... <>
Name_Not_Found<>sage<>2014/05/16(金) 23:50:02.72 ID:???<> lodashの話題をTwitterのあごちゃんがよく呟いてたけど。。。まさかね <>
Name_Not_Found<>sage<>2014/05/16(金) 23:50:50.42 ID:???<> そろそろ多倍長整数にも対応してもいい時代なんじゃないの <>
Name_Not_Found<>sage<>2014/05/16(金) 23:52:48.51 ID:???<> 誰やねんw
関数言語的に書き直していくと、今までのコードのアラが見えてきて
くそコードを書いていた自分に凹んできますが、俺だけでしょうか? <>
Name_Not_Found<>sage<>2014/05/17(土) 00:12:50.62 ID:???<> >>554
C言語系(C,C++,Javaなど)は0しか出力されない
知らずにいると痛い目にあう <>
Name_Not_Found<>sage<>2014/05/17(土) 00:13:49.57 ID:???<> >>558
俺は、prototype.jsが無い時代に、lodashでいうeachなどのようなものを
当時関数型言語の知識もなかったが、自作していた。
ループが一行で書けるという程度のメリットしか当時は理解していなかったけど。
このように、昔自力でやっていたことが、後から
世間一般ではこういう風に言われているんだと知ることが多い。
たとえば、ネットもパソコン通信もない小学生時代。記憶媒体=紙に
BASICのコードを書いている時、コードが複雑になるからという理由で
FORとNEXTの対応をインデントをして線でつなぎ、GOTOでその中には
飛ばないようするという俺ルールを考えだしていた。
勉強することは大事で時間の節約になると思う反面。
自力で考えだしてる自分は、プログラミングと相性が良いなって思うw <>
Name_Not_Found<>sage<>2014/05/17(土) 00:29:13.30 ID:???<> >>559
純粋な興味本位で聞くのだけど、どういうロジックで 0 が出力されるの? <>
Name_Not_Found<>sage<>2014/05/17(土) 00:29:58.99 ID:???<> >>551
そもそも今までオリジン制約があったのはセキュリティーの観点からで、
サーバー側もクロスオリジンリクエストはできない前提でセキュリティー対策を考えてた
それがたとえば突然、新規格ではクロスオリジンリクエストできますってなったら当然困るわけで、
サーバー側が対応しないと使えないような今の仕様にするのは当然 <>
Name_Not_Found<>sage<>2014/05/17(土) 00:31:04.83 ID:???<> >>561
C言語だと整数型同士の演算結果は整数になる <>
Name_Not_Found<>sage<>2014/05/17(土) 00:31:58.55 ID:???<> 別にこれに関してはjavascriptが糞だとは思わないけどな
ただの仕様の違いであって <>
Name_Not_Found<>sage<>2014/05/17(土) 00:37:07.55 ID:???<> >>563
レスありがとう
つまり、5/3 === 1 になるわけね <>
Name_Not_Found<>sage<>2014/05/17(土) 00:38:27.48 ID:???<> for (い;ろ;は) { に }
javascript い→ろ→に→は→ろ→に→は→ろ...
その他 いろは→に→ろ→は→に→ろ...
ということでしょうか <>
Name_Not_Found<>sage<>2014/05/17(土) 00:39:30.44 ID:???<> >>564
俺もそう思う
これは突き詰めると「変数に型がないのがNG」と主張しているのと同じ <>
Name_Not_Found<>sage<>2014/05/17(土) 00:39:44.48 ID:???<> >>566
あー、うん、それでいいよ。
あと10年勉強しな。 <>
566<>sage<>2014/05/17(土) 00:40:24.94 ID:???<> すみません
>整数型同士の演算結果
ということでしたか
把握しました <>
Name_Not_Found<>sage<>2014/05/17(土) 00:41:53.87 ID:???<> その変な演算が問題になることなんてないだろ
重箱つつきすぎ <>
Name_Not_Found<>sage<>2014/05/17(土) 00:42:08.47 ID:???<> 5/3 === 1 ?
は?クソじゃん <>
Name_Not_Found<>sage<>2014/05/17(土) 00:43:22.57 ID:???<> console.log(5/3===1)
普通にfalseですが?
なめてんのか? <>
Name_Not_Found<>sage<>2014/05/17(土) 00:46:00.84 ID:???<> え? お前ら馬鹿なの?
5 / 3 = 1.666666666666667 なんだから、
j が 1.666666666666667 未満までのループで
0 と 1 しか表示されないの当たり前じゃん。
整数になるとか関係ねーしw <>
Name_Not_Found<>sage<>2014/05/17(土) 00:47:05.66 ID:???<> > 5/3 === 1 ?
> は?クソじゃん
はC言語のこと。 <>
Name_Not_Found<>sage<>2014/05/17(土) 00:47:18.77 ID:???<> 意味分からん
0と1とかざっくりしすぎだろ
原始的言語と一緒にすんな <>
Name_Not_Found<>sage<>2014/05/17(土) 00:48:53.15 ID:???<> そもそも現代の言語で5/3が0になるモンなんてないだろ
何でそんなこと言いだしたんだよ
このやろうばかやろう <>
Name_Not_Found<>sage<>2014/05/17(土) 00:51:15.34 ID:???<> >>576
あなたに呪いをかけた
> このやろうばかやろう
という、言葉を聞くと、
この夜老婆か犯ろう
という漢字に脳内変換してしまう呪いを。 <>
Name_Not_Found<>sage<>2014/05/17(土) 00:53:28.06 ID:???<> >>565
> 5/3===1
false <>
Name_Not_Found<>sage<>2014/05/17(土) 00:55:52.57 ID:???<> 5/3=1ってc言語っていうかアセンブラの演算だろw <>
Name_Not_Found<>sage<>2014/05/17(土) 00:57:07.10 ID:???<> >>552
言ってる意味がわからん
j<1なら0だけ出力されるが
j<1.1なら0と1が出力されて当然だよね <>
Name_Not_Found<>sage<>2014/05/17(土) 00:57:10.56 ID:???<> ようするに原始人がJSにも原始性を要求して
それがなかったからディスっただけだろ
そんな原始性はない方がいいんだからむしろ褒め言葉です <>
Name_Not_Found<>sage<>2014/05/17(土) 00:58:54.10 ID:???<> 5/3が1になるほうが糞じゃね?
仕様って言ってしまえばそうだけど <>
Name_Not_Found<>sage<>2014/05/17(土) 01:09:46.39 ID:???<> int型なんだから当たり前じゃん
勝手にfloatに変換されても困る <>
Name_Not_Found<>sage<>2014/05/17(土) 01:20:47.86 ID:???<> jsにint型なんてねーから <>
Name_Not_Found<>sage<>2014/05/17(土) 01:28:09.23 ID:???<> だから整数が無いのは糞仕様と言うこと <>
Name_Not_Found<>sage<>2014/05/17(土) 01:30:24.72 ID:???<> そんなのスクリプト言語なら普通だからw
原始人乙 <>
Name_Not_Found<>sage<>2014/05/17(土) 01:31:09.70 ID:???<> 型が無いPythonですら5/3=1だ <>
Name_Not_Found<>sage<>2014/05/17(土) 01:32:29.36 ID:???<> >>584
> 5/3
1.6666666666666667 <>
Name_Not_Found<>sage<>2014/05/17(土) 01:32:39.97 ID:???<> このスレにはJavaScriptしか知らない奴だけだってのはわかった <>
Name_Not_Found<>sage<>2014/05/17(土) 01:33:13.66 ID:???<> >>587
パイソンくそすぎワロタ <>
Name_Not_Found<>sage<>2014/05/17(土) 01:34:30.33 ID:???<> >>587
python2では・・ってかけよ <>
Name_Not_Found<>sage<>2014/05/17(土) 01:35:38.92 ID:???<> >>590
ちなみにJavaScript以外に整数が無い言語を知らない
あったら教えてくれ <>
Name_Not_Found<>sage<>2014/05/17(土) 01:39:29.93 ID:???<> >>591
確かにpython3だと実数になった
5//3が整数か
随分無謀な仕様変更したもんだ <>
Name_Not_Found<>sage<>2014/05/17(土) 01:43:05.26 ID:???<> http://writecodeonline.com/php/
echo 5/3;
→1.6666666666667
当たり前だわな
整数が欲しいなら結果を整数にしろって話 <>
Name_Not_Found<>sage<>2014/05/17(土) 01:43:46.54 ID:???<> >>593
哀れww
パイソン3が無謀なんじゃない
お前がアホなだけや <>
Name_Not_Found<>sage<>2014/05/17(土) 01:45:03.68 ID:???<> 5 / 3は現実的に考えて小数になる
整数が欲しければ計算後に整数に変換すれば?
5/3が勝手に整数にされて切り捨てなのか切り上げなのか四捨五入なのかマイナスではどうなのか仕様全部把握しとかないと使えない糞仕様 <>
Name_Not_Found<>sage<>2014/05/17(土) 01:46:29.90 ID:???<> 把握せずに作り始めるのかよ <>
Name_Not_Found<>sage<>2014/05/17(土) 01:58:45.66 ID:???<> >>596
> 5 / 3は現実的に考えて小数になる
なんねーよw
5.0/3.0 → 1.666666…
5/3 → 1 余り 2 だろ (余りは同時に取得出来ないから 5 % 3 で計算する)
算数もできねーのかよ <>
565<>sage<>2014/05/17(土) 01:59:29.93 ID:???<> まさか、こんなに荒れるとは...
言葉足らずでごめん
C言語では「5/3 === 1」になり、JavaScriptでは「5/3 -> 1.6666666666666667」になる
言語仕様の違いがあるだけで、どちらがいいというものでもないかと <>
Name_Not_Found<>sage<>2014/05/17(土) 02:06:05.64 ID:???<> こんなの荒れるというほどではないな <>
Name_Not_Found<>sage<>2014/05/17(土) 02:12:00.93 ID:???<> どう見ても責任>>552にあるだろw
なんで謝るんや <>
Name_Not_Found<>sage<>2014/05/17(土) 02:13:25.81 ID:???<> 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()も知らないでいるとハマる可能性がある <>
Name_Not_Found<>sage<>2014/05/17(土) 02:16:08.66 ID:???<> Math.random() じゃなかった % の方だった
しかし % が実数の余りを返すってのは正直便利でもある <>
Name_Not_Found<>sage<>2014/05/17(土) 03:58:42.26 ID:???<> >>598
循環小数って知ってる?
小学校じゃ習わないか
ごめんね <>
Name_Not_Found<>sage<>2014/05/17(土) 04:05:10.88 ID:???<> >>604
有理数か分数って言え
自然数⊂整数⊂有理数(分数)⊂無理数⊂実数⊂複素数
だ <>
Name_Not_Found<>sage<>2014/05/17(土) 04:25:07.17 ID:???<> なんでお前ら下らないことで言い争いしてるの
両方ともよそでやれよ <>
Name_Not_Found<>sage<>2014/05/17(土) 07:07:47.86 ID:???<> 関数言語的なプログラミングをすると、
一つの処理の中で二種類以上のものを作ることに違和感を感じます
reduceが一つのものしか返さないように出来ているということもありますが、
単純に、美しくない、関数言語のパラダイムとそぐわない、と感じます
こういう場合どうするのがいいのでしょうか
関数言語におけるデザインパターン的なものとか、出てるんでしょうか <>
Name_Not_Found<>sage<>2014/05/17(土) 11:18:18.91 ID:???<> >>607
ECNMAScriptは関数言語じゃない <>
Name_Not_Found<>sage<>2014/05/17(土) 13:12:02.10 ID:???<> >>608
それがどうかしたの? <>
Name_Not_Found<>sage<>2014/05/17(土) 13:15:41.16 ID:???<> >>609
関数言語でないのに関数言語的アプローチを目指すことが間違い <>
Name_Not_Found<>sage<>2014/05/17(土) 13:39:53.06 ID:???<> JavaScriptは関数型でもオブジェクト指向型でもありません
無理やり関数型やオブジェクト指向っぽく書こうとするのはやめましょう <>
Name_Not_Found<>sage<>2014/05/17(土) 14:58:00.07 ID:???<> >>610
その言語の特徴を活かしたアプローチをスレばいいんじゃないの?
つまり、関数型とオブジェクト指向の両方を
バランスよく取り入れた言語なんだから、
関数型とオブジェクト指向の両方のアプローチを
バランスよく行えばいい。
どちらにしろ何らかのアプローチをしないといけないんだしさ。 <>
Name_Not_Found<>sage<>2014/05/17(土) 15:23:15.27 ID:???<> >>612
関数型言語的性質がないから>>607のような問題が起きているのだと思うのだけど
それでも異論があるなら、関数言語的アプローチとしてあなたが具体案を提案すべきでは? <>
Name_Not_Found<>sage<>2014/05/17(土) 15:33:32.08 ID:???<> >>607の問題ってなんですか?
一つの処理で二種類以上のものを作ることでしょうか?
関数型言語では、そんなことしないですよ?
JavaScriptは関数型言語の思想が混じっているので、
関数言語的アプローチでいうからこそ、
>>607の問題はできないのです。関数型言語だから。 <>
Name_Not_Found<>sage<>2014/05/17(土) 16:07:09.62 ID:???<> >>614
横からだけど、ちゃんと質問に沿った回答を心がけた方がいいよ
>>612とニュアンスが微妙に変化してるし、その突っ込みは本当に必要だったの?
初めから>>614の回答だけなら何も言わないけどさ <>
Name_Not_Found<>sage<>2014/05/17(土) 16:12:16.73 ID:???<> >>614
> 一つの処理で二種類以上のものを作ることでしょうか?
詳しくは知らんのだが、関数型言語はリストで返り値を持てたような
俺の記憶違いかな?
詳しい人の説明を求む <>
Name_Not_Found<>sage<>2014/05/17(土) 16:16:20.19 ID:???<> それならJavaScriptも配列を返せばいいじゃない。 <>
Name_Not_Found<>sage<>2014/05/17(土) 16:20:18.38 ID:???<> 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"); <>
Name_Not_Found<><>2014/05/17(土) 16:29:12.65 ID:vKHtBQrX<> フレーム内のコンテンツを印刷にあたり
frames[frameName].print();
というコードを書いています。
これでうまくいっていますが、IE10においては
window.print(); したときと同様、全画面が印刷されてしまいます。
フレームへのアクセス方法が他にあるんでしょうか? <>
619<><>2014/05/17(土) 16:31:10.22 ID:vKHtBQrX<> フレームと書いた部分は、正確には iframe です <>
Name_Not_Found<>sage<>2014/05/17(土) 16:35:57.88 ID:???<> >>618
素朴な疑問だが
> 配列に似た構文を使ってその結果を返します
とあるが、 配列そのものを返しているようにも見えるが
「配列に似た構文」とは関数の中の return ではなく
代入の左辺を指すのではないのか?
var a = f();
var [b, c] = f();
があるとき a は配列になるのでは?
function f() {
return new Array(1, 2);
}
だったら? <>
619<><>2014/05/17(土) 16:56:27.58 ID:vKHtBQrX<> スミマセン、うまくいきました。IEでは次のように先にfocusする必要があるようです。
frames[frameName].focus();
frames[frameName].print();
印刷データのキャッシュなどの関係でうまくいってる可能性もあるので、
尚、確認してみますですm(_ _)m <>
Name_Not_Found<>sage<>2014/05/17(土) 16:58:54.76 ID:???<> >>621
> 「配列に似た構文」とは関数の中の return ではなく
> 代入の左辺を指すのではないのか?
「配列に似た構文を使って」だから文章的には矛盾はないと思うけど...
あなたの理解で合ってる <>
Name_Not_Found<>sage<>2014/05/18(日) 00:37:55.93 ID:???<> 指定した関数を何回呼ばれたか分かるようにするライブラリみたいのありますか? <>
Name_Not_Found<>sage<>2014/05/18(日) 05:38:04.24 ID:???<> JavaScriptプロファイラ で検索 <>
Name_Not_Found<>sage<>2014/05/18(日) 06:04:04.78 ID:???<> >>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 <>
Name_Not_Found<>sage<>2014/05/18(日) 06:21:32.09 ID:???<> >>626
指摘するとしたらこんなところかな。
・関数名がかぶると困る
・count_hash がグローバル変数なのでよくない
・+=1よりも++の方が一般的で短いので推奨
で上記の指摘点を考慮しつつ、こんな感じのインターフェースにするといいかもね。
counter = call_counter(foo); // fooをクロージャと差し替えてカウンターオブジェクト生成
foo()呼び出し省略
console.log(counter.count);
もしくは
before_hook(foo, function() { count++; }); // 関数呼び出し前にフックを仕込む
foo()呼び出し省略
console.log(count); <>
Name_Not_Found<>sage<>2014/05/18(日) 06:34:13.58 ID:???<> >>627
・counter がグローバル変数なのでよくない <>
Name_Not_Found<>sage<>2014/05/18(日) 06:43:33.04 ID:???<> >>628
counterはローカル変数ねw <>
Name_Not_Found<>sage<>2014/05/18(日) 06:51:07.18 ID:???<> >>629
var ついてないけど、ローカル変数?
(多分、>>626も同じ事を思ってるよ) <>
Name_Not_Found<>sage<>2014/05/18(日) 06:58:53.61 ID:???<> >>630
たんなるつけ忘れってことw <>
Name_Not_Found<>sage<>2014/05/18(日) 07:01:05.58 ID:???<> >>627
このインターフェイスでどうやってfooを置き換えられると? <>
Name_Not_Found<>sage<>2014/05/18(日) 07:04:00.87 ID:???<> 寝てないからなぁw
メソッドが属するオブジェクトも
引数に入れてやってください。 <>
Name_Not_Found<>sage<>2014/05/18(日) 09:02:34.26 ID:???<> 俺ならこうする
カウントしたい関数=test();
function test(){}
↓
xxxx=0;//global
function test(){console.log(xxxx++)}
これじゃイカンのか?態々getterみたいなことせんでも <>
Name_Not_Found<>sage<>2014/05/18(日) 09:34:29.72 ID:???<> 指定した関数名じゃなく指定した関数のカウント回数
>>634 指定すらしてない <>
Name_Not_Found<>sage<>2014/05/18(日) 11:17:10.55 ID:???<> countTest = 0;
function test(){
countTest++;
console.log("test");
}
test();
test();
console.log(countTest + "回呼ばれました"); <>
Name_Not_Found<>sage<>2014/05/18(日) 11:44:08.83 ID:???<> だめだ わかってないなぁ <>
Name_Not_Found<>sage<>2014/05/18(日) 12:20:03.06 ID:???<> ×わかってない
◎質問者の説明不足 <>
Name_Not_Found<>sage<>2014/05/18(日) 12:24:22.13 ID:???<> 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()); <>
Name_Not_Found<>sage<>2014/05/18(日) 12:30:20.96 ID:???<> これはどうですか
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 <>
Name_Not_Found<>sage<>2014/05/18(日) 12:44:21.60 ID:???<> >>639
誰もlodashに触れてないのにどこから出てきたんです? <>
Name_Not_Found<>sage<>2014/05/18(日) 12:49:05.21 ID:???<> 最初から触れるとレス貰えなくなるから学習したんでしょ <>
Name_Not_Found<>sage<>2014/05/18(日) 12:52:08.25 ID:???<> >>640
ありがとうございます
fn.nameにしてこちらを採用させていただきます <>
Name_Not_Found<>sage<>2014/05/18(日) 13:40:48.95 ID:???<> >>640
これグローバルに無い関数は計測出来ないじゃん0点
プロファイラで計測する以外に方法はない <>
Name_Not_Found<>sage<>2014/05/18(日) 14:07:02.22 ID:???<> >>641
高階関数とlodashの親和性は高いので。
もちろんlodash使わなくても出来ますよd(^_^o) <>
Name_Not_Found<>sage<>2014/05/18(日) 17:39:50.71 ID:???<> 結局、>>626と同じじゃねーかw なんでこんなに手間増やしてベンチ激遅にしなきゃらんのだw アホ過ぎる <>
Name_Not_Found<>sage<>2014/05/18(日) 17:47:08.38 ID:???<> 今の時代はベンチ速度よりも、
メンテンス性の方が重要視されるからだよ。 <>
Name_Not_Found<>sage<>2014/05/18(日) 17:51:04.24 ID:???<> 何をとるかは目的によるのであって、時代は関係ないねw <>
Name_Not_Found<>sage<>2014/05/18(日) 18:31:36.12 ID:???<> いや関係有るよ。正確に言えばパソコンの性能だが。
ほんの15年前まで、速度が必要な所にJavaScriptを
使うこと自体ありえない話だった。
速度が気になる? じゃあJavaScriptなんかやめろよ。
これが常識だった。 <>
Name_Not_Found<>sage<>2014/05/18(日) 18:34:44.83 ID:???<> JavaScriptのリクエスト数の方が問題になるからねぇ。
目的がリアルタイムゲーム以外なら、
JavaScriptの実行速度を考慮する必要はない
という結論でいいんじゃないか。 <>
Name_Not_Found<>sage<>2014/05/18(日) 18:40:50.68 ID:???<> >>649
お前、趣味でやってるのかよwww <>
Name_Not_Found<>sage<>2014/05/18(日) 18:42:48.28 ID:???<> 趣味でやってる人は、0.0001秒にまで
こだわったりするからなw <>
Name_Not_Found<>sage<>2014/05/18(日) 19:02:02.26 ID:???<> ベンチ取ってみたんだけど何これ?おかしくね?何故rowが糞遅いのか?firefoxだと、何故row2が一番速いのか?
http://jsperf.com/row-vs-lodash <>
Name_Not_Found<>sage<>2014/05/18(日) 19:06:59.39 ID:???<> おかしいのはベンチの取り方 <>
Name_Not_Found<>sage<>2014/05/18(日) 19:10:59.43 ID:???<> 100万回のループで10秒も時間が違ったのだ!
1秒の方が10倍も速いんだぞ!
10倍もの差は無視できない!
でもそれ1回あたり0.00001秒ですよね? <>
Name_Not_Found<>sage<>2014/05/18(日) 19:32:02.99 ID:???<> なるほど。ベンチの取り方かえたら、おかしくなくなったわ <>
Name_Not_Found<>sage<>2014/05/18(日) 19:34:58.21 ID:???<> 2<<1と2*1って速度変わりますか? <>
Name_Not_Found<>sage<>2014/05/18(日) 20:08:56.87 ID:???<> 処理系の実装によるだろうね。
このケースなら構文解析で定数に置換されるだろうから、
速度は同じになるんじゃないかな。 <>
Name_Not_Found<>sage<>2014/05/18(日) 20:19:00.95 ID:???<> 俺がそうだったので速度厨の気持ちも分かるが
lodash化する過程で大量の無駄な処理に気づいた
部分的なベンチマークに拘ると全体的なアルゴリズムが洗練されないのだな
関数言語的プログラミングは汚さを許さないというか、
汚いところが浮き上がって見えるので、処理が洗練されていく <>
Name_Not_Found<>sage<>2014/05/18(日) 21:21:57.72 ID:???<> dom要素をcloneNode(true)して、id属性だけは削除したいです
しかしcloneしたもののidにヌルストリングやnullを代入しても消えません
deleteで削除しても駄目です
どうすれば消えるのでしょうか? <>
Name_Not_Found<>sage<>2014/05/18(日) 21:48:38.04 ID:???<> removeAttrib <>
Name_Not_Found<>sage<>2014/05/18(日) 21:57:28.74 ID:???<> それ用のメソッドがあったんですね
ありがとうございました <>
Name_Not_Found<>sage<>2014/05/18(日) 22:06:10.25 ID:???<> テキストを書き換えるときはinnerHTMLを使うとDOMが壊れるからやめろっていいますけど
これってバグなんじゃないのでしょうか <>
Name_Not_Found<>sage<>2014/05/18(日) 22:37:32.31 ID:???<> 違うでしょうね <>
Name_Not_Found<>sage<>2014/05/18(日) 22:37:37.34 ID:???<> そんな話聞いたことない <>
Name_Not_Found<>sage<>2014/05/18(日) 22:39:02.34 ID:???<> じゃあまず聞いたことある人いませんか? <>
Name_Not_Found<>sage<>2014/05/18(日) 22:40:21.46 ID:???<> <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倍遅いんだけどとかいう話ではなく
数十回レベルでもハッキリと遅いのが見える 明らかにブラウザに負荷をかけてる <>
Name_Not_Found<>sage<>2014/05/18(日) 22:43:47.27 ID:???<> >>663
テキストを書き換えるなら
element.textContent や textNode.data の方が
より適切ってことではないの?
( < や > は実体参照に置換してくれる)
実際に要素を生成することも含むならやめる必要はないと思う
(その場合に DOMが壊れるとは具体的に何を意味するのかわからん) <>
Name_Not_Found<>sage<>2014/05/18(日) 22:47:45.17 ID:???<> 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");//イベント消えちゃうよー <>
Name_Not_Found<>sage<>2014/05/18(日) 22:48:57.28 ID:???<> 連投すまん 三度目の正直、次からはしっかり確認する。最終行
a.innerHTML=a.innerHTML.replace("cliok","click");
が正解 <>
Name_Not_Found<>sage<>2014/05/18(日) 22:50:03.56 ID:???<> innerHTMLはdomを真新しいものに置き換えるので
変数がその参照を持っていたらまずいとかその程度のことだろ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:08:56.27 ID:???<> >>665
え、驚きなんですが・・・?
徳丸先生とかあごちゃんのtwitterチェックしてませんの?
ちょっと前に話題に上がってるネタですよ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:12:59.20 ID:???<> >>664-666
無知って恥ずかしいですね
>>667
evalみたいなっていうのは何の話なのかよくわかりませんが
そういうことではなくてinnerHTMLで書き換えるとDOMが壊れるのでXSSが起こるのはinnerHTMLがdomのめんどうみないのがおかしいんじゃないかって話です <>
Name_Not_Found<>sage<>2014/05/18(日) 23:14:28.49 ID:???<> >>672
http://d.hatena.ne.jp/hasegawayosuke/20140508/p1
これかぁ その二方は知らないけど、この記事書いてるhasegawaさんならそれなりに(
この手のバグはそのうち治るから放置でいいよ(´・ω・) <>
Name_Not_Found<>sage<>2014/05/18(日) 23:14:49.65 ID:???<> JavaScriptの情報のアンテナ低いやつ多すぎて話になんねえわ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:15:30.06 ID:???<> だからなんでdomが壊れるんだよ
壊れねーよ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:16:36.49 ID:???<> >>676
情弱バカは書き込むんじゃねえよ
壊れるんだよ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:17:36.04 ID:???<> 壊れてたまるかよw
そんなことで壊れるならプログラム動かねーから <>
Name_Not_Found<>sage<>2014/05/18(日) 23:19:27.52 ID:???<> >>673
いくつか想像はつきますが、事象を特定できないので質問するならもっと正確に質問して下さい。
「DOMが壊れる」って何ですか?
本当に理解できているのかあやしくなる表現ですね。 <>
Name_Not_Found<>sage<>2014/05/18(日) 23:21:42.53 ID:???<> >>678-679
もうお前みたいなウルトラのバカは勉強してから書き込めよ
https://www.owasp.org/index.php/DOM_based_XSS_Prevention_Cheat_Sheet <>
Name_Not_Found<>sage<>2014/05/18(日) 23:22:45.38 ID:???<> あきらかに理解してないだろ
他人の書いた文章をそのまま使うな
自分の頭で咀嚼してから自分の言葉で表現しろ
それがB級以上のプログラマーの在り方だ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:26:45.66 ID:???<> >>667 >>668 >>669 >>670 ここらへんのネタか
>>672 >>674 こっちのネタかは
質問者の文だと分からんよね 後者っぽいけど
そして、理解せず質問するなってのは変じゃないか
理解出来てたら質問スレに来ないと思う <>
Name_Not_Found<>sage<>2014/05/18(日) 23:28:20.57 ID:???<> innerHTMLにどんな値を代入しようが、「壊れる」ということはないと思うんだけど
「想定しない木構造になってしまう」という意味?
なんにせよユーザー入力された値を信用してそのまま使うなというのはHTMLに限らずだね <>
Name_Not_Found<>sage<>2014/05/18(日) 23:28:30.22 ID:???<> なるほど
一理ある <>
Name_Not_Found<>sage<>2014/05/18(日) 23:31:02.65 ID:???<> >>674
これはinnerHTMLのバグじゃないだろ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:31:41.12 ID:???<> domが壊れるんじゃなくてinnerHTMLが間違ってるんじゃん
フォームごとinnerHTMLで渡すとかどんな状況だ?
そんなくそコード普通は書かないから <>
Name_Not_Found<>sage<>2014/05/18(日) 23:33:21.05 ID:???<> >>682
理解出来なくて質問するのはいいとしても、「知ったかぶりで適当な事を発言して、他人に知らないんですか?」と嘯くのは勘弁してほしいわ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:33:59.93 ID:???<> >>これってバグなんじゃないのでしょうか
バグ以外の何ものでもないだろうな <>
Name_Not_Found<>sage<>2014/05/18(日) 23:40:19.74 ID:???<> よく分からないから単純な再現コード書いてください <>
Name_Not_Found<>sage<>2014/05/18(日) 23:41:40.27 ID:???<> >>687
いや理解できないのはお前がそれを知らないから理解できないだけ
>>680
を全文読みましょう
少なくともinnerHTMLに関連する箇所だけでも読みましょうね <>
Name_Not_Found<>sage<>2014/05/18(日) 23:42:00.01 ID:???<> 何者にもなれないお前たちに告げる
↓ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:42:46.21 ID:???<> ここで聞いたおれが一番のバカだったわ
コアな部分にはあんまり興味のないお遊び野郎しかいなくて残念だ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:43:41.50 ID:???<> 確かに金にならないものに興味は無い <>
Name_Not_Found<>sage<>2014/05/18(日) 23:44:20.49 ID:???<> いやだから実証コード書けよ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:45:18.75 ID:???<> >>694
>>680のリンクにありますが?ちゃんと読んでから書き込めしろや東京スカイツリーバカか <>
Name_Not_Found<>sage<>2014/05/18(日) 23:46:36.28 ID:???<> そんなのいちいち読んでられるか
単純な実証コードって言ってんだろ
お前が理解した範囲で書けよ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:47:42.37 ID:???<> 「ボクちゃんは自分で考えることも出来ないので
代わりに考えてください」って言ってるようにしか見えない <>
Name_Not_Found<>sage<>2014/05/18(日) 23:49:07.83 ID:???<> >>690
なら初めから具体的に質問しろよ
質問者はどれにも触れてないのに、質問内容が理解出来る訳ないだろ
>663から>680を確定させるには情報が不足してるとは思わないのか <>
Name_Not_Found<>sage<>2014/05/18(日) 23:49:19.43 ID:???<> >>696
単純なコードというレベルのものが>>680ありますよ?
初級者は無理に回答しなくていいのよ^^ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:50:33.03 ID:???<> >>698
もうね情弱は無理に答えなくていいって
innerHTMLのバグを知らないお前はくちだすなよ <>
Name_Not_Found<>sage<>2014/05/18(日) 23:52:21.96 ID:???<> innerHTMLのバグが一つだけだと確信している時点でいろいろとダメだな <>
Name_Not_Found<>sage<>2014/05/18(日) 23:52:46.09 ID:???<> あのーこれは脆弱性の話なんですから、
innerHTMLで書き換えると壊れるんじゃなくて
innerHTMLに入れる文字の話でしょう? <>
Name_Not_Found<>sage<>2014/05/18(日) 23:57:40.79 ID:???<> 初めから>>680を出していたならここまで荒れなかっただろうに
質問の仕方がお粗末だったな <>
Name_Not_Found<>sage<>2014/05/19(月) 00:03:50.21 ID:???<> どれが質問者か区別つかないし、>>680で確定なのかも怪しいよ
質問者だけはわかってるんだろうけどね <>
Name_Not_Found<>sage<>2014/05/19(月) 00:10:28.47 ID:???<> 荒らすための質問だからな。 <>
Name_Not_Found<>sage<>2014/05/19(月) 00:19:28.94 ID:???<> これがアスペフィルタの人なのか?
いろいろと酷い <>
Name_Not_Found<>sage<>2014/05/19(月) 00:23:26.45 ID:???<> こんな奴と一緒にすんなカス <>
Name_Not_Found<>sage<>2014/05/19(月) 00:27:59.68 ID:???<> あの人もわさと曖昧な質問をしてたからまあ、似たようなものか <>
Name_Not_Found<>sage<>2014/05/19(月) 00:31:40.62 ID:???<> <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");
として外部変数にするとエラーがでるのはなぜでしょうか <>
Name_Not_Found<>sage<>2014/05/19(月) 00:40:43.61 ID:???<> 内部変数にすると、の間違いじゃなくて?
内部変数にすると、で正しければ
init内でvar 〜と宣言した変数は、init内でのみ使えて、init外では使えなくなるのです。
そして、外で同じ名前の変数があった時は、その内容を変えず維持します。
a="1111";
function test(){
var a="2222";alert(a);
};
test()//2222と表示される(test内部でa=2222となっている)
alert(a);//1111と表示される(外側のaは2222になっていない) <>
Name_Not_Found<>sage<>2014/05/19(月) 01:20:55.18 ID:???<> >>709
その init() が呼び出されるタイミングと
var canvas = document.getElementById("canvas1");
が評価されるタイミングが違うんでないのか
getElementById は文書が(より正確にはその要素が)読み込まれていない時点で呼び出されたなら、当然 null を返す <>
Name_Not_Found<>sage<>2014/05/19(月) 01:29:47.06 ID:???<> styleは属性の個々の子属性も削除するにはremoveAttributeした方がいいんですか? <>
709<>sage<>2014/05/19(月) 01:29:59.09 ID:???<> みなさんありがとうございます
>>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);
}
これはまだ読み込まれていないのですか? <>
Name_Not_Found<>sage<>2014/05/19(月) 01:42:46.15 ID:???<> 上の方で言ってる問題って
フォーム関係の要素に``が入っていたらinnerHTMLが文字化けするってことですか? <>
Name_Not_Found<>sage<>2014/05/19(月) 01:53:35.29 ID:???<> それと文字化けは関係ない <>
Name_Not_Found<>sage<>2014/05/19(月) 01:59:33.70 ID:???<> >>713
その記述のみから断言はできないがおそらくそうだろう
スクリプト実行と DOM の読み込みタイミングについて調べるべし
onload はDOMと画像などのリソースが読み込まれた後に実行されるので
canvas = ... , ctx = ... を init()の中に入れればおそらく動く
内部変数とかは関係ない <>
Name_Not_Found<>sage<>2014/05/19(月) 02:30:28.85 ID:???<> >>715
じゃあ何と関係があるんですか? <>
Name_Not_Found<>sage<>2014/05/19(月) 02:41:38.19 ID:???<> 質問者はもちろん回答者もこの問題の本質を分かっていないように正直みえるのですが・・。
問題の本質は何でしょうか? <>
Name_Not_Found<>sage<>2014/05/19(月) 02:56:44.73 ID:???<> >>718
最初の質問 >>663 で innerHTML はバグとか言っている所から
誤解と混乱を生じさせたことが問題
バグとは仕様に沿わない実装のふるまいを意味するものであり
セキュリティ云々とは関係ない
真の意味の「問題」は質問の中には元々存在していない <>
Name_Not_Found<>sage<>2014/05/19(月) 03:02:07.27 ID:???<> いや、バグはありますよね? <>
Name_Not_Found<>sage<>2014/05/19(月) 03:03:55.48 ID:???<> でもDOMが壊れるってのは否定されましたね。 <>
Name_Not_Found<>sage<>2014/05/19(月) 03:07:19.56 ID:???<> 元の質問はこの際どうでもいいですが
質問者はinnerHTMLに問題があるということを報告をしたのですから
それについては認識しておくべきでは? <>
Name_Not_Found<>sage<>2014/05/19(月) 04:49:18.89 ID:???<> <div id="hoge">
〜HTMLの表・10KB分〜
</div>
という大きめの表がHTML内にあって、
同じHTMLページ内に全く同じ「〜HTMLの表・10KB分〜」を
もう一度表示させたいのですが、
1行くらいでサクッと表示できるScriptはないでしょうか? <>
Name_Not_Found<>sage<>2014/05/19(月) 06:18:18.97 ID:???<> [key,value,key,value]
となっている配列からオブジェクトを作る関数は
lodashにないのでしょうか? <>
Name_Not_Found<>sage<>2014/05/19(月) 06:42:13.41 ID:???<> >>723
html
<div id="hoge">
〜HTMLの表・10KB分〜
</div>
<div id="fuga">
</div>
javascript
document.getElementById('fuga').innerHTML = document.getElementById('hoge').innerHTML; <>
Name_Not_Found<>sage<>2014/05/19(月) 07:09:52.64 ID:???<> forEachなどで1以外の増分のループを実現するにはどうしたらいいのでしょうか? <>
723<>sage<>2014/05/19(月) 09:25:14.68 ID:???<> >>725
ありがとうございました!
ずっとHTMLの容量ばかり食って困っていたんです <>
Name_Not_Found<>sage<>2014/05/19(月) 09:52:45.15 ID:???<> >>719
ちょっと違うね <>
Name_Not_Found<>sage<>2014/05/19(月) 09:59:12.13 ID:???<> >>719
innerHTMLで書き換えるとDOMが壊れる事でXSSを発生させる原因になる
セキュリティと関係ない話ではない
これで話がわからないともうあなたは話の輪に入れないから食いつかないほうが良い <>
Name_Not_Found<>sage<>2014/05/19(月) 10:10:37.83 ID:???<> >>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); <>
Name_Not_Found<>sage<>2014/05/19(月) 11:32:58.71 ID:???<> >>729
innerHTMLの読み出しがおかしいだけだから「domが壊れる」はおかしい
domは壊れない <>
Name_Not_Found<>sage<>2014/05/19(月) 11:35:09.23 ID:???<> >読み出し
>読み出し
>読み出し
>読み出し
>読み出し <>
Name_Not_Found<>sage<>2014/05/19(月) 11:37:31.66 ID:???<> え、どうしたの
発狂したの <>
Name_Not_Found<>sage<>2014/05/19(月) 11:39:33.80 ID:???<> もう触んないほうがいいって <>
Name_Not_Found<>sage<>2014/05/19(月) 12:02:58.23 ID:???<> 人をdisりたいだけの奴らがこれだけいるんだから、語彙には注意すべきだよなとは思うわ <>
Name_Not_Found<>sage<>2014/05/19(月) 12:11:15.52 ID:???<> どう見ても人をディスりたいだけの奴の意見だな <>
Name_Not_Found<>sage<>2014/05/19(月) 15:21:01.10 ID:???<> http://www.koizumi-lt.co.jp/product/webcatalog/index.html
このサイトの「カタログを開く」をクリックしてwebブラウザで表示されるpdfファイルを
全ページ一括でローカルに落とす方法ってありますか?
特にJavaScriptを勉強をしているわけではないのですが
リンク先のアドレスがjavascript:akarih1();と表示されているので質問させて貰いました
スレ違いでしたらすいません・・・ <>
Name_Not_Found<>sage<>2014/05/19(月) 15:24:14.21 ID:???<> スレ違いじゃなくて、板違いだねw <>
Name_Not_Found<>sage<>2014/05/19(月) 16:42:33.65 ID:???<> 勉強しているわけではないのでしたら今から勉強してください <>
Name_Not_Found<>sage<>2014/05/19(月) 21:29:28.96 ID:???<> innerHTMLが脆弱性を起こすのではなくて、
エスケープしてないから脆弱性を起こすという話
SQLはインジェクションを起こすから
使うなといっているようなもんw <>
Name_Not_Found<>sage<>2014/05/19(月) 22:49:35.93 ID:???<> そんな話じゃないだろw <>
Name_Not_Found<>sage<>2014/05/19(月) 23:52:02.18 ID:???<> >>740
そんな表面的な話じゃない
もっと深い内部仕様の話 <>
Name_Not_Found<>sage<>2014/05/20(火) 01:05:23.12 ID:???<> contenteditable領域でも読み取ったら文字が変化してることはあるのでしょうか? <>
Name_Not_Found<>sage<>2014/05/20(火) 01:05:56.45 ID:???<> 「innerHTMLで読み取ったら」でした
もしそうならDOMから読むとかしないといけないのでしょうか <>
Name_Not_Found<>sage<>2014/05/20(火) 01:47:24.44 ID:???<> >>724
ライブラリの質問は下記へ
【jQuery】JavaScript ライブラリ総合質問所 vol.3
ttp://toro.2ch.net/test/read.cgi/hp/1369444026/l50
>>726
forEachは、すべての要素を処理する
しかも、要素を処理する順番は決まっていないし、指定もできない <>
Name_Not_Found<>sage<>2014/05/20(火) 01:58:05.40 ID:???<> 引数の順番についてですが、
挿入するデータと挿入される要素があったとしたら
どっちが先になると思いますか?
insertHoge(data, element)
insertHoge(element, data)
dotch? <>
Name_Not_Found<>sage<>2014/05/20(火) 02:08:35.05 ID:???<> 質問です
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回実行されるとタイムラグみたいなのが発生するんでしょうか? <>
Name_Not_Found<>sage<>2014/05/20(火) 02:31:30.94 ID:???<> >>747
そのコードは次と等価になる
var i=0;
function fun(){
if(i==0){
i=2;
return undefined;
}else{
return 999;
}
} <>
747<>sage<>2014/05/20(火) 02:34:42.01 ID:???<> >>748
やっぱ1回目のが返り値として入っちゃうんですか
fun(){
func()
}
でもちゃんと2回目の返り値が入るまで待ってもらう方法ってないんですかね? <>
Name_Not_Found<>sage<>2014/05/20(火) 02:58:04.55 ID:???<> >>749
>待ってもらう
何を求めているのかわからん
1 回目と2回目から先は どうふるまわせたいのだ?
>>748 訂正
× i=2;
× i=1;
>>745
>しかも、要素を処理する順番は決まっていないし、指定もできない
そんな筈は無い
for in と取り違えてないか? <>
Name_Not_Found<>sage<>2014/05/20(火) 03:15:21.94 ID:???<> 内部関数を使うのじゃ <>
Name_Not_Found<>sage<>2014/05/20(火) 03:34:41.21 ID:???<> var i=0;
function fun(){
if(i==0){
i++;
return fun();
}else{
return 999;
}
} <>
Name_Not_Found<>sage<>2014/05/20(火) 03:38:38.88 ID:???<> >>726
Array#concat, Array#slice で index = 1 を除く配列を再構築し、Array#forEach で処理してはどうでしょう?
>>745
Array.prototype.forEach は 0 から昇順に処理していく仕様であり、処理順はランダムではありません。
別の仕様と勘違いしておられるのでは?
http://es5.github.io/#x15.4.4.18 <>
Name_Not_Found<>sage<>2014/05/20(火) 03:44:03.44 ID:???<> >>746
関数の内容に依存するとしかいえません。
必須の引数を第一引数にはしますが、どちらが必須か判断できる情報が出てないので。
蛇足ですが、Function#length があるのでオプション扱いの引数なら仮引数は指定しません。 <>
Name_Not_Found<>sage<>2014/05/20(火) 04:31:37.29 ID:???<> >>746
どっちとかはないからDOMの操作と合わせてみるとかはどうですか。
var insertedElement = parentElement.insertBefore(newElement, referenceElement) <>
Name_Not_Found<>sage<>2014/05/20(火) 05:38:26.95 ID:???<> ネストされたオブジェクト
hoge.moge.poge.page
にアクセスしたいですが、hogeの内容は不定で、
hoge.moge
などが存在する時もしない時もあるとします。
もし存在しない時に
if (hoge.moge.poge.page)
のような条件判定をすると、末端のpageの有無を調べる前にエラーになってしまいます
こういった複数階層のオブジェクトの属性をエラーを出さずに調べることの出来る
ライブラリみたいのありませんか? <>
Name_Not_Found<>sage<>2014/05/20(火) 06:13:34.57 ID:???<> >>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); } <>
Name_Not_Found<>sage<>2014/05/20(火) 06:23:23.21 ID:???<> ありがとうございます
ですがこれは例で、階層を構成するキーの名前や深さは毎回色々変わります <>
Name_Not_Found<>sage<>2014/05/20(火) 06:55:10.81 ID:???<> >>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', ...]); <>
Name_Not_Found<>sage<>2014/05/20(火) 07:10:55.68 ID:???<> 便乗で質問なのですがtry catchでスルーしちゃだめなのですか <>
Name_Not_Found<>sage<>2014/05/20(火) 07:12:49.14 ID:???<> >>759
ありがとうございます
自分もほぼ同じ処理を今書いたところでした・・ <>
Name_Not_Found<>sage<>2014/05/20(火) 07:16:19.59 ID:???<> 例外は基本的に異常を目立つ方法で知らせるものなので
通常の範疇で発行するのは控えた方がいいと本に書いてありました <>
Name_Not_Found<>sage<>2014/05/20(火) 07:32:17.56 ID:???<> 例外を投げるんじゃなくてエラーをそのままにしておくので少し違いましたね <>
Name_Not_Found<>sage<>2014/05/20(火) 11:21:09.91 ID:???<> >>761
プロパティアクセス演算子を ToBoolean で判定するより、in 演算子で判定する方が好ましいと思います <>
Name_Not_Found<>sage<>2014/05/20(火) 11:24:37.76 ID:???<> >>760,762
例外を放置することになるので、特殊なケースを除いて出来るだけ避けるべきです
通常は例外が発生しないようにコードを組みます <>
Name_Not_Found<>sage<>2014/05/20(火) 11:33:03.89 ID:???<> >>762,763,765
なるほど勉強になりました
ようはデバッグのときに使えということなのでしょうかね <>
Name_Not_Found<>sage<>2014/05/20(火) 11:54:56.67 ID:???<> >>766
デバッグで try-catch は使いませんよ。
例外を回避したら、エラー不明でむしろデバッグできなくなります。
デバッグするなら例外は発生させるべきです。
そもそも、例外とは意図的に発生させるものです。
TypeError なら特定の型以外の引数は受け付けないという事。
ならば、関数呼び出しする前に typeof 演算子で型判定を入れれば例外を回避できます。
多くの場合はこのように実行前に回避できますが、中には関数呼び出しするまで例外条件を判定できないケースがあり、その場合に try-catch を使用します。 <>
Name_Not_Found<>sage<>2014/05/20(火) 14:58:08.77 ID:???<> 広告を非表示にするアドオンに対抗するためのantiblockっていうのあるじゃないですか
これは広告を非表示にするアドオンを入れると
Please disable your なんちゃらってメッセージが出てページ内の表示をブロックされるんですが
このantiblockが生成する要素をconsoleから消してるんですが、消したらすぐにまたブロックの要素が表示されます
http://antiblock.org/?p=v3&demo
これってどういう仕組みになっているのでしょうか? <>
Name_Not_Found<>sage<>2014/05/20(火) 16:02:55.30 ID:???<> >>768
要素の削除を検知する mutation event を利用しているっぽい
コードの中に
addEventListener("DOMNodeRemoved", ... )
がある
そのハンドラで削除された要素を再生成しているのだろう <>
Name_Not_Found<>sage<>2014/05/20(火) 16:07:47.08 ID:???<> まじすか
クソうぜえっすね
どうにもならなそうですね
今は降伏することにします <>
Name_Not_Found<>sage<>2014/05/20(火) 16:17:54.83 ID:???<> Chromeなら開発者ツールからコード直接編集できるだろ <>
Name_Not_Found<>sage<>2014/05/20(火) 16:26:09.11 ID:???<> エディターやらIDEやらってなに使ってます? <>
Name_Not_Found<>sage<>2014/05/20(火) 16:47:55.76 ID:???<> atom <>
Name_Not_Found<>sage<>2014/05/20(火) 17:21:25.47 ID:???<> >>770
削除ではなく、非表示にしてみてはどうでしょう? <>
747<>sage<>2014/05/20(火) 17:22:52.51 ID:???<> >>750-752
ありがとうございます
内部関数で解決しました <>
Name_Not_Found<>sage<>2014/05/20(火) 17:55:21.12 ID:???<> >>774
その手がありますね!ありがとうごじあます <>
Name_Not_Found<>sage<>2014/05/20(火) 17:55:48.16 ID:???<> >>771
ページを移動するたびに手動で編集するのは堪えますw <>
Name_Not_Found<>sage<>2014/05/20(火) 20:13:54.14 ID:???<> >>759
> if(obj instanceof Object){
これやって、一体何のメリットが有るんですか?
(注意 俺は無駄だと思ってる) <>
Name_Not_Found<>sage<>2014/05/20(火) 20:31:52.07 ID:???<> 最後のelseがあるからじゃない <>
Name_Not_Found<>sage<>2014/05/20(火) 21:40:15.22 ID:???<> var xx=function(){}
ってする人はバカなんですか?
みにくいんですけど <>
Name_Not_Found<>sage<>2014/05/20(火) 21:57:08.13 ID:???<> >>788
あー、それは俺も思う。
必要な場合はそれでいいけど、
普通は、function xx() {} であるべきだよな。 <>
Name_Not_Found<>sage<>2014/05/20(火) 22:06:45.79 ID:???<> どっちでもいいんでないの
後から変更することもあるから最初から
var xx=function(){}
にしとけば手間を省けるとか
エディタのシンタックス強調の設定を手抜きしたいとか
>>778
チェックしないと obj[name] がエラーになるやん <>
Name_Not_Found<>sage<>2014/05/20(火) 22:14:40.76 ID:???<> >>780
変数が実体化されるタイミングが違う <>
Name_Not_Found<>sage<>2014/05/20(火) 22:21:05.01 ID:???<> タイミングとはもっと詳しくおしえてください <>
Name_Not_Found<>sage<>2014/05/20(火) 22:26:49.29 ID:???<> ぐぐれかす <>
Name_Not_Found<>sage<>2014/05/20(火) 22:30:08.53 ID:???<> タイミングが違うのは判った上でだろ <>
Name_Not_Found<>sage<>2014/05/20(火) 22:37:37.84 ID:???<> タイミングが違う事がわかってるなら「バカなんですか?」とバカな発言はしないだろ <>
Name_Not_Found<>sage<>2014/05/20(火) 22:43:00.32 ID:???<> >>784
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/10_Execution_Contexts.html#section-10.1.3
安易に「バカなんですか?」なんて質問すると冷たい反応しか得られないから注意してね <>
Name_Not_Found<>sage<>2014/05/20(火) 22:49:25.05 ID:???<> 普通に考えるとタイミングが違うだけなら、var xx=function(){} と書くメリットがまったく感じられないんですがw
バカは言いすぎかもしれませんが、頭が悪いかなと思います <>
Name_Not_Found<>sage<>2014/05/20(火) 22:58:58.40 ID:???<> >>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;
} <>
Name_Not_Found<>sage<>2014/05/20(火) 23:42:10.77 ID:???<> >>789
まあお前はその程度だよ <>
Name_Not_Found<>sage<>2014/05/20(火) 23:58:49.28 ID:???<> >>791
その程度のレスしかできないあなたもその程度 <>
Name_Not_Found<>sage<>2014/05/21(水) 00:05:40.17 ID:???<> 変数に代入してるならそれを何度か使うんだろ
一度しか使ってないなら、何度か使う可能性があるのかもしれない <>
Name_Not_Found<>sage<>2014/05/21(水) 00:57:55.28 ID:???<> >>789
どちらにしても小馬鹿にした態度は変わらないのね…
初めから結論が出ているなら質問しない方がいいと思うよ
通常は結論を保留するからこそ質問するものだけど、あなたの質問は逆に見えるからね
両者の違いを理解しない状態で一方を馬鹿と断ずるのは賢い選択とはいえないよね <>
745<>sage<>2014/05/21(水) 02:14:18.04 ID:???<> >>745
自己レス。漏れの勘違い
forEachは、順番に処理するんだね
for inが、順序不定だったか <>
Name_Not_Found<>sage<>2014/05/21(水) 02:30:27.12 ID:???<> 結局
var a = function(){}
と
function a(){}
のそれぞれの使い分けを詳しく説明できる人いないの? <>
Name_Not_Found<>sage<>2014/05/21(水) 02:36:43.70 ID:???<> むしろ何が分からないのかが分からない <>
Name_Not_Found<>sage<>2014/05/21(水) 02:47:45.23 ID:???<> 既に説明されてるし、これ以上詳しく説明しようとも思わない <>
Name_Not_Found<>sage<>2014/05/21(水) 02:56:49.43 ID:???<> あらたに判明した問題に対して
フラグを新設することで対応して
後から何やってるか分かりにくくなる現象の名前は何ですか? <>
Name_Not_Found<>sage<>2014/05/21(水) 02:58:50.37 ID:???<> 場当たり対応 <>
Name_Not_Found<>sage<>2014/05/21(水) 09:08:07.58 ID:???<> ぬるぽきゃんせらー <>
Name_Not_Found<>sage<>2014/05/21(水) 09:31:03.28 ID:???<> >>798
どのレスのことなのかレス番つけてください <>
Name_Not_Found<>sage<>2014/05/21(水) 11:09:52.06 ID:???<> >>802
>>788
ES5.6 の情報なら>>5 <>
Name_Not_Found<>sage<>2014/05/21(水) 12:06:33.67 ID:???<> クロージャって、関数が作成された後にも
その変数の内容はリアルタイムに追尾されるんですか?
関数を作成してクロージャにする
→元関数の中で変数を変更する
→作成した変更の中で渡された変数を参照する
変数の内容は? <>
Name_Not_Found<>sage<>2014/05/21(水) 12:07:06.24 ID:???<> 作成された関数の中で、でした <>
Name_Not_Found<>sage<>2014/05/21(水) 12:11:39.33 ID:???<> (function (){
var a = 'hoge';
_.delay(function(){
console.log(a);
},60);
a = 'moge';
}());
とやったらリアルタイムに反映してました <>
Name_Not_Found<>sage<>2014/05/21(水) 12:13:57.16 ID:???<> >>796
違いを理解したからこそ「頭が悪い」と判断したんじゃなかったの? <>
Name_Not_Found<>sage<>2014/05/21(水) 18:23:04.78 ID:???<> 関数の中で関数を作成することでしかクロージャは実現できないのでしょうか?
既に存在する関数に変数を封入することはできませんか? <>
Name_Not_Found<>sage<>2014/05/21(水) 18:26:03.30 ID:???<> >>808
具体的に何がしたいんだ?
よそから渡された関数の環境を書き換えたいとか? <>
Name_Not_Found<>sage<>2014/05/21(水) 19:52:22.51 ID:???<> >>801 ガッ <>
Name_Not_Found<>sage<>2014/05/21(水) 20:14:33.19 ID:???<> >>808
その関数専用の大域変数を作りたいということなら
bind を使うのがいいんでないか <>
Name_Not_Found<>sage<>2014/05/21(水) 23:11:05.52 ID:???<> >>808
おかしな事を言っている
関数は定義した時点で使う変数が決まっている
後で追加するという事はその変数を使うコードはどうするんだ? <>
Name_Not_Found<>sage<>2014/05/22(木) 00:38:09.91 ID:???<> 参照渡しして書き換えるみたいなことが簡便に出来ないかと思ったのです <>
Name_Not_Found<>sage<>2014/05/22(木) 00:51:46.58 ID:???<> >>813
それがオブジェクトだったら普通に引き数で渡して
プリミティブだったらインラインで配列を作成して引き数で渡すかね <>
Name_Not_Found<>sage<>2014/05/22(木) 01:22:09.32 ID:???<> >>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 <>
Name_Not_Found<>sage<>2014/05/22(木) 02:06:47.52 ID:???<> var a = function(){}
変数に代入して、aで使うと、見にくいだけで、特に損がない
関数名で使うと、その度にインタプリタが、
関数が同じかどうかを確認したり、
ちょっとした書き間違いや引数の違いでも、
どう処理されるかわからない
JSは間違いでもエラーにならず、処理が進むため、
余計な間違いを避けたい <>
Name_Not_Found<>sage<>2014/05/22(木) 02:30:38.82 ID:???<> 変数に代入して、aで使うと、見にくいだけで、特にメリットがない。
の間違いだな。 <>
Name_Not_Found<>sage<>2014/05/22(木) 02:46:08.76 ID:???<> 変数に代入して複数箇所でコールバックとして使うんだろ
はい論破 <>
Name_Not_Found<>sage<>2014/05/22(木) 02:53:57.45 ID:???<> いつまでこの話題を引きずるんだろう
自己完結してるなら黙ってればいいのにね
指摘回答を待ってるのが透けて見える <>
Name_Not_Found<>sage<>2014/05/22(木) 03:00:09.91 ID:???<> 別に変数に代入しなくても複数箇所でコールバックとして使えるんじゃないの? <>
Name_Not_Found<>sage<>2014/05/22(木) 06:21:07.17 ID:???<> そう言われればそうか <>
Name_Not_Found<>sage<>2014/05/22(木) 06:29:56.46 ID:???<> 関数定義は関数定義より前のコードで使えるが
代入は代入してからでないと使えない
したがってスタティックな性質のものなら関数定義、
ダイナミックな性質のものなら代入がいい
はい論破 <>
Name_Not_Found<>sage<>2014/05/22(木) 06:55:02.62 ID:???<> 関数の定義のスコープは
・関数定義
・関数名に代入
だけですか?
window.a = function() {};
とかすれば関数定義とほぼ同じなのでしょうか <>
Name_Not_Found<>sage<>2014/05/22(木) 08:13:06.38 ID:???<> 「関数の定義のスコープは関数定義」
「関数の定義のスコープは関数名に代入」
ってどういう意味? <>
Name_Not_Found<>sage<>2014/05/22(木) 09:50:23.23 ID:???<> >>823
>>803 <>
Name_Not_Found<>sage<>2014/05/22(木) 10:01:50.12 ID:???<> >>824
もっと柔軟に文章を読む努力をしてください
>>825
なるほどすっきりしました
ありがとうございました <>
Name_Not_Found<>sage<>2014/05/22(木) 11:24:38.88 ID:???<> 代入したほうがメモリが節約できるからね <>
Name_Not_Found<>sage<>2014/05/22(木) 12:24:53.58 ID:???<> それは違うんじゃ・・・ <>
Name_Not_Found<>sage<>2014/05/22(木) 12:40:21.23 ID:???<> 代入だと上書きされる危険がある
はい論破 <>
Name_Not_Found<>sage<>2014/05/22(木) 13:19:17.47 ID:???<> 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に関数名が入ることを除いて違いはない。 <>
Name_Not_Found<>sage<>2014/05/22(木) 13:23:04.15 ID:???<> foo = function hoge(){}
ってこともあり得るんだから少し違うんじゃ? <>
Name_Not_Found<>sage<>2014/05/22(木) 13:51:30.13 ID:???<> もう少し詳しく。 <>
Name_Not_Found<>sage<>2014/05/22(木) 14:30:14.32 ID:???<> $(document)を関数の中で複数回使う時は別の変数に入れますか?入れませんか? <>
Name_Not_Found<>sage<>2014/05/22(木) 14:52:24.08 ID:???<> 指定した文字列のテキストノードを持つ要素を探す方法があれば教えて下さい
例えば <div>ほげほげ</div> のような要素を探したいときに
現在はgetElementsByTagName('div')からforで子ノードを調べています <>
Name_Not_Found<>sage<>2014/05/22(木) 15:19:05.71 ID:???<> >>834
class属性つけるのアリなら
html
<div><div class="hoge">hogeほげほげhoge</div>
<span>ほげほげ</span>
<div>ほげほげ</div>
javascript
console.log($("div.hoge:contains('ほげほげ')")); <>
Name_Not_Found<>sage<>2014/05/22(木) 15:22:03.15 ID:???<> 訂正>>835
html
<div><div class="hoge">hogeほげほげhoge</div></div>
<span class="hoge">ほげほげ</span>
<div class="hoge">ほげほげ</div> <>
Name_Not_Found<>sage<>2014/05/22(木) 17:55:14.17 ID:???<> jqueryのdocument readyっていうやつはjavascriptでどうやるんですか?
window.addEventListenerでloadは違いますよね <>
Name_Not_Found<>sage<>2014/05/22(木) 17:56:08.64 ID:???<> >>834
XPathでもいけると思う <>
Name_Not_Found<>sage<>2014/05/22(木) 17:56:36.77 ID:???<> >>837
DOMContentLoaded <>
Name_Not_Found<>sage<>2014/05/22(木) 19:20:20.84 ID:???<> >>826
いや、努力してもわからんから聞いている
「関数の定義のスコープ」の「スコープ」とは
何から何が見えていることを意味しているのだ?
「だけですか?」の「だけ」とはどのような制約を意味しているのだ? <>
Name_Not_Found<>sage<>2014/05/22(木) 19:29:02.69 ID:???<> そもそもわからなければ、答える・られる人がくるまで
もしくは、質問の補足があるまでスルーすればいい
それかエスパーして解答すればいい <>
Name_Not_Found<>sage<>2014/05/22(木) 19:39:10.24 ID:???<> >>834
文書の変更が許されない/変更したくないなら
NodeIterator か TreeWalker で1個ずつ探索するしかないか
TreeWalker の方が
テキストノード 1 個だけを含む
という条件で要素を探索できるので効率的に行える
巨大な文書で多量の検索がある場合はもっと効率的にやるために
インデックスを作成することになるだろう <>
Name_Not_Found<>sage<>2014/05/22(木) 21:17:36.81 ID:???<> >>841
エスパー回答ばかりで荒れた状況があることを考えると安易に同意できないかな
質問者もある程度の努力は必要かと <>
Name_Not_Found<>sage<>2014/05/22(木) 23:41:34.55 ID:???<> >>829
お前はロンパールームに行って二度と帰って来るな <>
Name_Not_Found<>sage<>2014/05/23(金) 15:52:15.51 ID:???<> 文字をクリックする→その後別の場所をクリックする→その間の文字列が選択状態になる
という機能が、いろんなアプリに付いていますが、
chromeにもあります
それが想定外の部分で働いて文字が選択状態になることがあります
clickイベントをpreventDefaultしても防げないようです
どうすれば防げるでしょうか <>
Name_Not_Found<>sage<>2014/05/23(金) 16:03:21.22 ID:???<> http://jsbin.com/fajotupu/1/edit
文字列のどこかをクリックし、その後シフトキーを押しながら別の場所をクリックすると
その間の文字列が選択されるとい機能が
色々なアプリにあります
これがchromeで想定していないところで発動して困っています
クリックイベントでpreventDefaultしても止まらないようです
JSでは止めることは出来ないのでしょうか? <>
Name_Not_Found<>sage<>2014/05/23(金) 16:05:52.97 ID:???<> janeが変で連投になってしまいました <>
Name_Not_Found<>sage<>2014/05/23(金) 16:11:41.66 ID:???<> というか、書き込みが一部消えたような?? <>
Name_Not_Found<>sage<>2014/05/23(金) 16:31:33.52 ID:???<> なにこれ
レスがごっそり無くなってるぞ <>
Name_Not_Found<>sage<>2014/05/23(金) 17:31:32.84 ID:???<> どこが消えてるの?全部表示されてますよ <>
Name_Not_Found<>sage<>2014/05/23(金) 19:05:31.34 ID:???<> >845以降のレスが消えてるね
新スレも一部消えていたけど、板移転の影響かな <>
Name_Not_Found<>sage<>2014/05/23(金) 19:11:35.50 ID:???<> >874までならログを保存してあるけど、それ以上はわからない
http://codepad.org/boBOpl2e <>
Name_Not_Found<>sage<>2014/05/23(金) 19:24:01.09 ID:???<> Web制作板全体で5/23 0:00〜14:00(最低14:00、あるいは15:00)のログがなくなってるね。
移転するならメンテ中にして書き込みをロックすればよかったのに <>
Name_Not_Found<>sage<>2014/05/23(金) 19:37:35.63 ID:???<> まぁログ速でもscでもどこでも見れるさ <>
Name_Not_Found<>sage<>2014/05/24(土) 00:18:48.46 ID:???<> >>846
この機能ですが、ほとんどのアプリがそうなるので
windows自体の機能かもしれません <>
Name_Not_Found<>sage<>2014/05/24(土) 00:58:42.52 ID:???<> 質問です
システムが勝手に吐き出すhtml 「A」がありますがこれにcssとjavascriptで装飾と動きを与えたいと思っています
そこで「B」のhtmlファイルに、このシステムが吐き出すファイル「A」から.loadで読み込んだhtmlを
表示させたところ、「B」のヘッダに記述したcssを適用させることができました
が、「B」のファイルに記述したjavascriptが動きません。
.loadで読み込んだhtmlに対してjavascriptで効果を与えることは出来ないのでしょうか?
もし出来るのであればどのような方法がありますか? <>
Name_Not_Found<>sage<>2014/05/24(土) 01:01:38.36 ID:???<> firefoxでも選択されますね
preventDefaultしているのに選択されるのが奇妙ですが・・ <>
Name_Not_Found<>sage<>2014/05/24(土) 01:07:16.07 ID:???<> ぶっちゃけ疑問に思っている方が不思議だわw
>>857
パソコン歴とか年とかどれくらい何?
普段何やってる人? <>
Name_Not_Found<>sage<>2014/05/24(土) 01:24:00.18 ID:???<> >>858
しょうもない煽りですね
あなたよりは経験あると思いますよ <>
Name_Not_Found<>sage<>2014/05/24(土) 01:25:14.15 ID:???<> デフォルト動作を無効にしているのに選択される合理的な理由を
万が一言えるのなら言ってみてくださいね <>
Name_Not_Found<>sage<>2014/05/24(土) 01:28:49.79 ID:???<> ちなみにcssでuser-select: none;を指定すれば選択されないようにできるという目処は立ちました
ですが、やはりpreventDefaultしているのに文字列選択されるのはクソだと思うし、許しません <>
Name_Not_Found<>sage<>2014/05/24(土) 01:43:31.16 ID:???<> mousedownをpreventすれば選択されないと判明しましたので許します <>
Name_Not_Found<>sage<>2014/05/24(土) 04:07:19.91 ID:???<> >>856
読み込む順序は?
ちゃんと、Aを読み込んだ後に、JSを実行している? <>
Name_Not_Found<>sage<>2014/05/24(土) 08:47:38.07 ID:???<> コピペを防ぎたいのか知らんがソースを表示すれば簡単にコピペは可能 <>
Name_Not_Found<>sage<>2014/05/24(土) 09:56:00.67 ID:???<> >>840
> これがchromeで想定していないところで発動して困っています
発動条件が書いてないので答えようがない、が正直な答え
そもそも、Googleに報告はしてるんだろうね <>
Name_Not_Found<>sage<>2014/05/24(土) 12:07:06.79 ID:???<> コピペを防ぎたいのではなく、アプリを操作中に選択状態になるのが困るということです <>
Name_Not_Found<>sage<>2014/05/24(土) 12:13:01.52 ID:???<> マウスカーソルを動かさないまま変更する汎用的な方法はありますか?
自分が見つけたのはカーソル直下の透明要素のcursorを変更し、
数百ms待ってから透明要素を消すことで出来るのですが
ディレイを入れず変更直後に透明要素を消すと変わりません(chrome)
このディレイの値が環境依存っぽくて気になります
ディレイを入れずに変更できる方法はないでしょうか? <>
Name_Not_Found<>sage<>2014/05/24(土) 13:02:36.05 ID:???<> リフローを発生させたらすぐに反映させることができましたo(^▽^)o <>
Name_Not_Found<>sage<>2014/05/24(土) 23:15:53.83 ID:???<> localstorageのsetItemの第一引数に変数は使えますか? <>
Name_Not_Found<>sage<>2014/05/24(土) 23:54:54.57 ID:???<> >>869
試してみればいいじゃん。 <>
Name_Not_Found<>sage<>2014/05/25(日) 00:58:28.66 ID:???<> localstorageで使える残り容量ってどうやれば知れますか? <>
Name_Not_Found<>sage<>2014/05/25(日) 03:30:07.30 ID:???<> >>871
残りの利用可能容量は Quota Management API を使ってプログラム上で取得することができます。 <>
Name_Not_Found<>sage<>2014/05/25(日) 04:59:11.79 ID:???<> 最新chromeでwindow.webkitNotificationsが使えなくなってるね
くそが <>
Name_Not_Found<>sage<>2014/05/25(日) 05:14:31.10 ID:???<> https://developer.chrome.com/extensions/notifications
Internal server error
サーバもろくに管理できねーのか <>
Name_Not_Found<>sage<>2014/05/25(日) 05:34:41.69 ID:???<> http://jsbin.com/gucikube/1/edit
notificationsのテストをしようとしてもエラーになるので
console.log(chrome.notifications);
とやったところundefinedと言われます
オブジェクト自体がないなら動くわけありません
chrome.notificationsはchrome28から使えるようになったようですが、
また使えなくなったのでしょうか? <>
Name_Not_Found<>sage<>2014/05/25(日) 09:50:54.90 ID:???<> >>859
と言うことは、ただのアホか <>
Name_Not_Found<>sage<>2014/05/25(日) 16:15:46.95 ID:???<> キー入力の状態を明示的に「bodyをクリックした時と同じような状態」にするにはどうしたらいいでしょうか?
chromeで、contenteditableな領域でIMEオンのまま他のbuttonをクリックすると、
フォーカスは外れるのですが、そのままキー入力をすると、
contenteditable領域にキー入力が送られてしまいます
buttonではなくbodyなどをクリックすることでblurした場合は、そのようなことはありません
バグだと思いますが、buttonクリックでは「半blur」のような状態になるのです
なので完全にblurしたいのですが、スクリプトにより要素でblurを発行しても、完全blurにはなりません
完ブラするにはどうしたらいいでしょうか <>
Name_Not_Found<>sage<>2014/05/25(日) 16:26:24.74 ID:???<> はっと思いつき、
input textにフォーカスを移し、すぐにblurする、
というウルテクで完ブラすることが出来ました\(^o^)/
contenteditableという十分に枯れてないコンポーネントでのみ起きる現象だったので。 <>
Name_Not_Found<>sage<>2014/05/26(月) 04:10:53.13 ID:???<> >>872
そういうものがあったのですね
調べてみます
ありがとうございました <>
Name_Not_Found<><>2014/05/26(月) 11:55:57.10 ID:mCA2gxiP<> >>822-
わすれちゃいけないのが関数定義はブロックスコープだということ
>>875
それは拡張用であって特別なパーミッションが必要
標準APIは
new Notification('title', {body: 'body'})
これもパーミッションが必要 <>
Name_Not_Found<>sage<>2014/05/26(月) 12:47:07.25 ID:???<> > わすれちゃいけないのが関数定義はブロックスコープだということ
それがどうかしたの? <>
Name_Not_Found<>sage<>2014/05/26(月) 13:16:42.37 ID:???<> 変数もブロックスコープじゃん <>
Name_Not_Found<>sage<>2014/05/26(月) 14:10:23.44 ID:???<> いや、全て関数スコープだと思うが…
ブロックスコープはES6になるまで存在しない <>
Name_Not_Found<>sage<>2014/05/26(月) 14:16:23.31 ID:???<> だよな <>
Name_Not_Found<>sage<>2014/05/26(月) 15:46:05.85 ID:???<> テキストをスマホでタップした時に選択状態にしたいんですが、
<input type="text" ontouchstart="this.select();">
↑このように書いても選択されません。
何かアドバイスくださいお願いします。 <>
Name_Not_Found<>sage<>2014/05/26(月) 16:57:15.21 ID:???<> ontouchstart を click にする。 <>
Name_Not_Found<>sage<>2014/05/26(月) 18:28:44.95 ID:???<> >>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()() <>
Name_Not_Found<>sage<>2014/05/26(月) 19:36:43.17 ID:???<> >>887
ブラウザの独自拡張を当然の動作であるかのように「関数定義はブロックスコープ」や「変数もブロックスコープ」と主張するのは違うと思ったのでES5仕様に則り、「全て関数スコープ」とした
「ES5では」と書かなかったのは反省してる
ところで、「ES6ではブロックスコープになった」のは知らなかった
まともな実装ならブロック内で関数宣言しないと思うが、コードによっては大きな影響がありそうだな <>
Name_Not_Found<>sage<>2014/05/26(月) 19:45:04.77 ID:???<> >>887
だからなんなんだよ?
ブロックスコープで関数宣言するってはない誰もしてないだろ。
関数スコープで関数宣言するのなら、
動的なものでもない限り、静的に関数宣言、つまり
var func = function () {・・・} よりも
function func() {・・・} の方がふさわしいって話を
みんなしてるんだが。
function文とfunction式の違い、式である必要がないなら
function文を使いましょう。 <>
Name_Not_Found<>sage<>2014/05/26(月) 19:47:42.40 ID:???<> ん? まさか { }でくくられたものは全て
ブロックコープだって思ってないか?
function foo() {
function bar() {・・・} // ← ここはブロックスコープではない。
if (・・・) {
// こことかがブロックスコープ
}
} <>
Name_Not_Found<>sage<>2014/05/26(月) 19:56:45.54 ID:???<> うーん、なんか主張が噛み合ってないね。関数スコープってのは逆に言えばブロック中に書いても滲み出るものであって、
そもそもブロック中に置けないのなら関数だってブロックなんだから、むしろブロックスコープだという方が一般的な言葉の印象として正しいと思うけどな。
まあそれはブロックスコープより関数スコープが「基本」だと思ってるからだろう。そこが咬み合わない原因かもしれない。
ブロックスコープが「基本」で関数スコープが第二の面白いスコープだと思えば、関数直下にしかない状況でわざわざ関数スコープを優先的に先に考えるのは変だと気付く
ES6からはブロックスコープだがES5までは関数スコープだったとわざわざ言うとまるでブロック文中に書いたときの挙動が変わったように思える。
だが実際の実装ではまさにそうなってるんだから、むしろ関数スコープだったと言えるのは、ES5というより実際の実装の方ではないだろうか? <>
883,888<><>2014/05/26(月) 20:00:04.53 ID:AQkGHY9b<> 何を怒っているのかわからんが、俺は参考になったので>>887には感謝してる <>
Name_Not_Found<>sage<>2014/05/26(月) 20:01:48.87 ID:???<> ここは質問者の答えは出るけど
その後よくわからんJavascript勉強会が始まる <>
883,888<><>2014/05/26(月) 20:12:09.21 ID:AQkGHY9b<> >>891
文脈からすると俺に対するレスであってるだろうか
出来れば、レスアンカーを付けてくれるとありがたい
(一応いっておくが、>889-890は俺じゃない)
> ES6からはブロックスコープだがES5までは関数スコープだったとわざわざ言うとまるでブロック文中に書いたときの挙動が変わったように思える。
そのように理解してる
あなたが主張する ES6 のブロックスコープは残念ながら裏が取れていないのだが、
ES5 では try-catch を除いて関数スコープなので>>837では "OK" が返り、ES6では "NG" になるはず
事実、Google Chrome 34 では "NG" が返る <>
Name_Not_Found<>sage<>2014/05/26(月) 20:14:18.98 ID:???<> >>891
お前が馬鹿なだけじゃね?
そもそも関数スコープとブロックスコープの違いを知らなかっただろ?
それを無理やり「俺は知ってた」みたいにこじつけるのやめとけよ。 <>
Name_Not_Found<>sage<>2014/05/26(月) 20:21:37.09 ID:???<> >>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/ <>
Name_Not_Found<>sage<>2014/05/26(月) 20:24:21.76 ID:???<> >>891
お前何いってんの? ECMAScriptの仕様調べないで、自分の定義から
仕様を推測するとかアホなことやってんの? お前の印象なんかどうでもよくて、
ブロックスコープと関数スコープのどちらが基本とか関係なくて、
単に仕様では「ES5までは関数スコープしか存在しなかった」という事実でしか無いだろ。
実装がどうとかそんなの関係なく関数スコープしかなかったの。それがECMASCriptの一般的な言葉。
で関数定義はブロックスコープで行った場合の挙動は実装依存だが、
関数スコープで行った場合の挙動は明確で使用することに何の問題もない。 <>
Name_Not_Found<>sage<>2014/05/26(月) 20:28:44.42 ID:???<> ES5において、スコープは
グローバルスコープ と 関数スコープしか無い。
関数の中にあるものは関数スコープで、そうでないものはグローバルスコープ
ES6では新たにブロックスコープができた。
ブロックスコープとは関数スコープの中でブロックを作った時に出来るスコープで、
そのスコープ内でのみ存在する変数はletを使って定義する。
letを使わない限り変数は関数スコープとなり、ブロックスコープはオプションと考えられる。 <>
Name_Not_Found<>sage<>2014/05/26(月) 20:33:03.85 ID:???<> >>898
>ブロックスコープとは関数スコープの中でブロックを作った時に出来るスコープ
グローバルスコープの中では、ブロックスコープはできないってこと? <>
Name_Not_Found<>sage<>2014/05/26(月) 20:33:15.39 ID:???<> ES6でスコープのデフォルトがブロックスコープに変わったとか
そういうことが起きたわけじゃない。
従来通りのコードを書けばES5のとおり関数スコープ(関数の中でなければグローバルスコープ)
それが互換性というものなのだから当然。
そこに新たにブロックスコープという概念が追加された。だがそれは追加機能であり
letを使わないとそのスコープは利用されない。 <>
Name_Not_Found<>sage<>2014/05/26(月) 20:34:57.29 ID:???<> >>899
めんどくせぇやつだな。
関数直下以外はブロックスコープだよ。
関数スコープはなくなったわけじゃないし、
letを使わない限り、関数スコープ。
ES5では関数スコープしかなくて、
ES6で新たにブロックスコープという概念が追加されたの。 <>
Name_Not_Found<>sage<>2014/05/26(月) 20:37:58.19 ID:???<> >>898
> letを使わない限り変数は関数スコープとなり、ブロックスコープはオプションと考えられる。
お手すきであれば教えて頂きたいのですが、>>887の「if文内での関数宣言がブロックスコープ」はES6にはない仕様で合ってるでしょうか
http://people.mozilla.org/~jorendorff/es6-draft.html から該当仕様を探そうとしていますが、見つけることが出来ず
自分の読解力がないだけなのか、本当に存在しないのか判断出来ませんでした <>
Name_Not_Found<>sage<>2014/05/26(月) 20:41:59.11 ID:???<> >>902
はいそうです。
関数定義はブロックでやってはいけません。
そもそも、動的に定義する必要がないものは静的に定義するのが良いコードなので、
関数定義は(必要がない限り)function文で行うものです。function式で行うべきじゃありません。
ifなどのブロックは実行時に処理されるかどうか決まるので本質的に動的です。
だから静的に行うべき関数定義は、静的に、ゆえに関数スコープでやるべきなのです。 <>
887<>sage<>2014/05/26(月) 20:48:41.12 ID:???<> >>889-890
変数がどんなスコープになるかは場所で決まるんじゃなく、宣言によって決まってる
「ここは〜スコープ」という言い方はない。「この宣言だと〜スコープ」となる
結果的にスコープがどうなるかで、このケースは〜スコープと言ってるわけではなく
この宣言はどんなスコープになる種類なのかを話している
>>891
確かに同じことの言い回しの問題かもしれない
>>894
びっくりして試してみたが初期設定のCh35(現在の安定版)では"OK"が帰った
そしてES6なら(ブロックスコープ)なら"OK"が帰る
すまないが返信はまた明日の朝する <>
902<>sage<>2014/05/26(月) 20:53:45.60 ID:???<> >>903
ありがとうございます。おかげ様ですっきりしました
私はif文内で関数を生成するなら関数式を使うのが自然だと思うので、ES6でもそのようにします
ところで、ES6 では let 以外は関数スコープとの事でしたが、const もブロックスコープではなかったでしょうか
あと、細かいことで恐縮ですが、あなたの仰る「関数定義」は「関数宣言」ではないでしょうか
ES6における関数定義は関数式を含むので文章通りに受け取るとおかしなことになってしまいます
http://people.mozilla.org/~jorendorff/es6-draft.html#sec-function-definitions <>
Name_Not_Found<>sage<>2014/05/26(月) 20:56:12.88 ID:???<> いや、スコープは場所で決まるんだよ。
ただし、ブロックスコープで有効な変数は
letを使うってだけ。
letを使った所がブロックスコープになるのではない。 <>
Name_Not_Found<>sage<>2014/05/26(月) 20:57:52.72 ID:???<> >>905
> 私はif文内で関数を生成するなら
いや、そういう区別の仕方はおかしいでしょw
動的に関数を生成するかどうかで決めるのが正しい。
動的に関数を定義するのは、定義するタイミングが動的になってしまう。
これは静的に決まることよりもコードのメンテナンス性という意味で
悪くなってる。 <>
Name_Not_Found<>sage<>2014/05/26(月) 20:58:36.45 ID:???<> >>905
> あと、細かいことで恐縮ですが、あなたの仰る「関数定義」は「関数宣言」ではないでしょうか
宣言と定義が明確に区別されているのは、
C言語ぐらいなので、それはどうでもいいこと。 <>
Name_Not_Found<>sage<>2014/05/26(月) 21:05:16.18 ID:???<> おまえらいいかげん他でやれよ <>
Name_Not_Found<>sage<>2014/05/26(月) 21:09:59.85 ID:???<> 真面目な会話と横槍の温度差が激しい <>
Name_Not_Found<>sage<>2014/05/26(月) 21:18:42.82 ID:???<> 無名関数を直接引数にするとき以外で
ifの中で関数を生成するってあまりないなぁ。 <>
Name_Not_Found<>sage<>2014/05/26(月) 22:22:56.23 ID:???<> 仕様の話と主観的な意見が入り混じっていて何だかなあ <>
Name_Not_Found<>sage<>2014/05/26(月) 22:37:49.43 ID:???<> 仕様の話なら、仕様見れで終わるわけで、
掲示板を使う理由がないんだがw <>
Name_Not_Found<>sage<>2014/05/26(月) 23:03:31.95 ID:???<> 画像を読み込むときに何%読み込み完了したか表示してるサイトとかたまにみますけど
あれはどうやってるんですか? <>
Name_Not_Found<>sage<>2014/05/26(月) 23:45:15.83 ID:???<> しかし代替手段のないletを平気で使えるようになるのは3年は待たないと駄目だろうね
>>914
XMLHttpRequest progressイベント でggr <>
Name_Not_Found<>sage<>2014/05/27(火) 01:53:35.43 ID:???<> 変数のスコープなんて考えを使ってるから、
セキュリティホールを作り込むんだよ。
全部グローバルにすればいい。
昔の堅牢なシステムは全部それで上手くいってた。 <>
Name_Not_Found<>sage<>2014/05/27(火) 02:14:27.39 ID:???<> >>916
それどんなFortranだよ <>
Name_Not_Found<><>2014/05/27(火) 02:35:27.41 ID:DGzKVkqL<> すみません、質問です
iframeに別ドメインのページを読み込ませると、その中で動いているjqueryがエラーを頻発し
IE8でjs警告メッセージがでてきます
(例えば、$(div).〜と書いてるのがエラーになり、jQuery(div).〜に書き直したら収まるような妙なエラー)
しかし、同じページをiframeでなく直接開くとそのエラーは出ないという状況です
これは何が原因でしょうか
iframeで開く時に何か気をつけないといけないことがあるんでしょうか <>
Name_Not_Found<>sage<>2014/05/27(火) 07:22:47.52 ID:???<> lodashで単純なforループをするにはどうしたらいいんですか? <>
Name_Not_Found<>sage<>2014/05/27(火) 08:10:04.49 ID:???<> 前の方でfunctionの問題が出ていますが
コンストラクタ定義をfunctionでして、そのprototype定義をその後ろでしていたとします
コンストラクタの前でnewしたら、
既にfunctionは定義されているのでインスタンスは生成できますが、
プロトタイプは設定されていないのでおかしくなります
function定義と同じタイミングでプロトタイプも定義する方法はありますか? <>
Name_Not_Found<>sage<>2014/05/27(火) 08:26:08.98 ID:???<> コンストラクタだけが出来て変になるのを防ぐために
function定義はやめた方がいいってことですよね?
はい論破 <>
Name_Not_Found<>sage<>2014/05/27(火) 10:24:36.93 ID:???<> 変になるのを防ぐってwwwww
せめて日本語を勉強してから論破しろよ <>
Name_Not_Found<>sage<>2014/05/27(火) 10:37:30.63 ID:???<> じゃあお前不完全なオブジェクト出来ていいのかよ <>
Name_Not_Found<>sage<>2014/05/27(火) 11:17:07.12 ID:???<> 相当>>780のことを根に持ってるようだね <>
Name_Not_Found<>sage<>2014/05/27(火) 11:18:44.08 ID:???<> >>920
よくわからんけど、つまりこういうこと?
変数に関数を代入するやり方では防ぎようがないね。
var Klass = function () {・・・} // コンストラクタ
↑前の方
ここでインスタンス生成
↓後ろ
Klass.prototype.foo = function () {・・・} <>
Name_Not_Found<>sage<>2014/05/27(火) 11:27:02.44 ID:???<> >>920
解決策ではないが、
new が実行される前に その function の prototype を freeze しとけば
おかしなことになる前にエラーを吐き出してくれる様になるんではないか <>
Name_Not_Found<>sage<>2014/05/27(火) 11:28:45.59 ID:???<> >>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 () {・・・} <>
Name_Not_Found<>sage<>2014/05/27(火) 11:34:24.70 ID:???<> 根本的な所で考え方が違っているんだよな
たとえばこういうコード
var a = foo();
function foo() { return 1 }
動くべきか、そうでないか。 <>
Name_Not_Found<>sage<>2014/05/27(火) 11:54:26.99 ID:???<> 動いちゃうんですねコレ。知らなかった。
jsファイルがパースされた時点でfooが有効になっていて、
実行時点で利用可能って解釈で合ってる? <>
Name_Not_Found<>sage<>2014/05/27(火) 11:58:47.22 ID:???<> C言語とかでは動かなくて
前方参照するために、プロトタイプ宣言とかいう
機能が必要になってしまう。
これを不要にした最初の言語は
Javaだろう。すごいね。 <>
Name_Not_Found<>sage<>2014/05/27(火) 12:07:23.26 ID:???<> >>925
中途半端に動かなくするのが重要なんだよ
エラーは早い段階で出すようにするのがセオリー <>
Name_Not_Found<>sage<>2014/05/27(火) 12:08:41.67 ID:???<> >>929
むしろ、なぜ動かないと思ったの? <>
Name_Not_Found<>sage<>2014/05/27(火) 12:09:46.29 ID:???<> 異常がある時
「オブジェクトが生成でき、メソッドを使うまで異常に気付かない」
より
「オブジェクトが生成できない」
の方がいい
それがA級プログラマーの発想 <>
Name_Not_Found<>sage<>2014/05/27(火) 12:18:12.47 ID:???<> >>906
お前さんの言いたいことは分かったが、>>904の一段落をよく読んでくれ
結果的な「スコープ」がどうなるかとか、「スコープ」自体の配置の話ではなく、
宣言によってその変数がどういうスコープに属するのかということで、
この宣言では〜スコープという言い方をしている
この「場所」がスコープになると言っているわけではない <>
Name_Not_Found<>sage<>2014/05/27(火) 13:03:33.34 ID:???<> JSはメソッドをすげ替えて呼ぶこともできるんだから、どちらにせよメソッド側のチェックも必要。
コンストラクタでは、thisが確実にクラスのインスタンスであり、未初期化なオブジェクトであることを確認して初期化する。
メソッドではthisが確実にクラスのインスタンスであり、初期化済みのオブジェクトであることを確認して扱う。
これが鉄則で、ビルドインAPIでも使われている手法。 <>
Name_Not_Found<>sage<>2014/05/27(火) 13:37:54.80 ID:???<> そんな面倒くさいチェック普通しないだろ <>
Name_Not_Found<>sage<>2014/05/27(火) 13:59:12.48 ID:???<> というか適切なprototypeを持っているかどうかってどうやってチェックできるの? <>
Name_Not_Found<>sage<>2014/05/27(火) 14:59:14.30 ID:???<> こんな感じになるはず
// 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
}
}) <>
Name_Not_Found<>sage<>2014/05/27(火) 16:24:54.09 ID:???<> 機種依存文字やめろや <>
Name_Not_Found<><>2014/05/27(火) 17:41:35.62 ID:zsvIvzaH<> あるページのボタンでCGIなどからの出力を読み込み、
それのみを印刷できるようにプログラムを作っています。
現在はiframeにページを読み込み、その内容を印刷できるようにコード書いています。
frames[frameName].focus();
frames[frameName].print();
動作そのものは問題ないのですが、IEにおいては縮小されて印刷されてしまい困っています。
親ページのメイン部分にwidthの指定があると(中央寄せのレイアウトなど)
そうなるようです。(IE10でテスト、11未確認)
またfloatなどの影響も受けているようです。
(これらをすべてはずすと縮小されず印刷される)
上記のような印刷のための他の方法は考えられるでしょうか?
どの道フレームを使うしかない気もするんですが・・・ <>
Name_Not_Found<>sage<>2014/05/27(火) 17:50:55.13 ID:???<> 印刷用CSSを指定してみれば? <>
東日本大震災<>sage<>2014/05/27(火) 19:03:25.53 ID:???<> これねー誰もおらん所で言うのでれむじー。
横綱渡り
剛君が横に出たー?とか
横綱に志賀剛君が出てきた所とか。
お頂いで横綱に食べに行ってるはず。
知らんなら知らんて言ってー。
お前うっとうしーよーいい加減ていうか俺今水男だよーとか
四日市と春日井市の間で車を追い抜いた所。
今の気持ちを大切にね。
かっこいいのになー。
なんでだろうなー。
ネクタイの縛り方
連舞と乱舞
しっしっしっしっしっしっしっし。
俺たち記憶の倉庫ばーん。
僕も中島って言うだよ。
あ、僕の1UPきのこが。
なんでねー俺がお前の疲れ取り?
えー自分で自分の首を絞めてる事に早く気づきましょう。
で、僕が一応ファイナルスターの <>
Name_Not_Found<><>2014/05/27(火) 22:06:25.82 ID:zsvIvzaH<> >>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)
因果関係がつかめません・・・ <>
Name_Not_Found<><>2014/05/27(火) 22:13:07.87 ID:zsvIvzaH<> 追記
上記b.htmlのようにページの大枠となるような要素のwidth指定に
離れた場所のiframeの印刷結果が影響される感じです。
例えば<div><div style="width:1000px"></div></div>のように
width指定なしの要素と入れ子にしても変わりません。 <>
943<><>2014/05/27(火) 23:21:43.21 ID:zsvIvzaH<> 自分ちで2ちゃんできないので今日いったんこれで上がります。
IE10の他の環境でも再現すれば、他の方法を考えたいと思っているので
試してもらえるとありがたいです。
現時点ではプリンタの問題とゆう可能性も捨てきれず、曖昧な状態なので・・・
一応こちらではこの後 window.open()でのコードを作って
試してみようと思ってますm(_ _)m <>
Name_Not_Found<>sage<>2014/05/28(水) 00:05:52.21 ID:???<> スタイルシートをmedia="all"とmedia="print"の2つにしてprint側のdivの幅をautoにする <>
Name_Not_Found<>sage<>2014/05/28(水) 02:27:46.91 ID:???<> >>945
floatがclearfixされてないとか、css由来の問題だろうね。
印刷プレビューの時点でおかしいの? <>
Name_Not_Found<>sage<>2014/05/28(水) 03:57:45.93 ID:???<> iframe側のc.htmlが、本体であるb.htmlのCSSに影響を受けるの?
b.html, c.htmlのCSSを、各b.css, c.cssとすると、
c.htmlのデザインは、c.cssに書けばよいと思う <>
Name_Not_Found<>sage<>2014/05/28(水) 06:54:11.10 ID:???<> あるイベントで絶対に実行させたい処理があるときはどうしたらいいですか?
イベント伝播の最上位のdocumentで処理すれば一応できそうですが
その前にstopPropagationされたら止まりますよね? <>
Name_Not_Found<>sage<>2014/05/28(水) 08:16:21.33 ID:???<> >>949
絶対は不可能です <>
Name_Not_Found<>sage<>2014/05/28(水) 08:32:01.00 ID:???<> >>949
キャプチャフェイズを使う <>
Name_Not_Found<>sage<>2014/05/28(水) 08:40:34.73 ID:???<> >>949
removeEventListener、addEventListnerの書き換え、JavaScriptの無効化
考え出したらきりがない
(ある程度の)完全性を保証するならイベントは諦めてサーバサイドで完結するプログラムで再構築するしかない <>
Name_Not_Found<>sage<>2014/05/28(水) 08:55:43.31 ID:???<> 次スレは975超えたらね。 <>
Name_Not_Found<>sage<>2014/05/28(水) 09:10:45.76 ID:???<> 何故そう揚げ足とったような返ししかできないのか <>
943<><>2014/05/28(水) 10:35:58.19 ID:by9DvGoZ<> >>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>(続く) <>
943<><>2014/05/28(水) 10:36:34.82 ID:by9DvGoZ<> (続)<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> <>
943<><>2014/05/28(水) 10:40:31.78 ID:by9DvGoZ<> >>955-956は>>946の方法ですね・・・
印刷用CSSのwidthをautoに変えてみたら、こちらもうまくいきました。
autoの方が用紙サイズに左右されないので良さそうです!
ありがとうございました。 <>
Name_Not_Found<>sage<>2014/05/29(木) 04:48:41.14 ID:???<> JavaScriptでテーブルを作成する時ってどうやるのが一番いいですか?
jqueryありでお願いします <>
Name_Not_Found<>sage<>2014/05/29(木) 05:26:13.41 ID:???<> ちなみにメソッドチェーンでオブジェクト指向的に作りたいです
appendHeaderとかappendRowとかを発行して組み立てていくイメージです <>
Name_Not_Found<>sage<>2014/05/29(木) 08:43:07.97 ID:???<> >>958-959
JavaScript ライブラリ総合質問所 vol.4
http://peace.2ch.net/test/read.cgi/hp/1400834117/ <>
Name_Not_Found<>sage<>2014/05/29(木) 11:08:59.40 ID:???<> むしろ自分でどう書くか系なのでライブラリではありません <>
Name_Not_Found<>sage<>2014/05/29(木) 12:13:46.12 ID:???<> >>958
> JavaScriptでテーブルを作成する時ってどうやるのが一番いいですか?
> jqueryありでお願いします
冗談みたいに思うかもしれんがこれ。
$('<table><tr><td></td></tr></table>')
もちろん動的にtrやtdを書き換える必要があるなら別のやり方をするけど
単にテーブルを作るだけならこれが一番良い
HTMLに属性やテキストをいれこみたいなら、テンプレートの出番。
lodashにテンプレート機能があるからそれを使う。
コードにHTMLを書いちゃいかんと思うかもしれないが、
DOMを作成するときのコードで一番わかり易いのはどれ?で
考えると実はHTMLそのものなんだよ。 <>
Name_Not_Found<>sage<>2014/05/29(木) 12:29:55.16 ID:???<> なるほど
テンプレートは考えてませんでした
ありがとうございました <>
Name_Not_Found<>sage<>2014/05/29(木) 17:45:01.93 ID:???<> type="text/javascript" charset="utf8"
はあった方がいいんですか? <>
Name_Not_Found<>sage<>2014/05/29(木) 18:57:36.96 ID:???<> >>964
HTML5ならtype属性のデフォルトはtext/javascript
Content-Typeヘッダを出力するならcharset属性は不要 <>
Name_Not_Found<>sage<>2014/05/29(木) 19:23:14.20 ID:???<> >>958
jQueryに頼らなくてもぶっこむだけなら↓でいいじゃん
document.body.innerHTML = '<table><tr><td>りんご</td><td>みかん</td></tr></table>'; <>
Name_Not_Found<>sage<>2014/05/29(木) 19:42:18.00 ID:???<> innerHTMLは使うな <>
Name_Not_Found<>sage<>2014/05/29(木) 19:43:03.49 ID:???<> innerHTMLを使うとtypeバトラーの人とかあごっちに怒られるぞ <>
Name_Not_Found<>sage<>2014/05/29(木) 19:43:48.28 ID:???<> eval使え <>
Name_Not_Found<>sage<>2014/05/29(木) 20:09:47.77 ID:???<> まーたinnerHTML使うな厨か
それ単なる思考停止だから <>
Name_Not_Found<>sage<>2014/05/29(木) 20:11:43.71 ID:???<> >>958
jQuery と DOM API は共存可能
http://www2u.biglobe.ne.jp/~oz-07ams/prog/dom-ref/HTML/HTMLTableElement.html
>>966
tbody要素がないとかsummary属性がないとか...
(innerHTMLはせっかくHTMLパーサを通しているのに仕様違反に対してエラーも警告も出さないんだよね) <>
Name_Not_Found<>sage<>2014/05/29(木) 20:19:49.63 ID:???<> > tbody要素がないとか
省略可能
> summary属性がないとか...
廃止
いい加減、HTML5勉強しろよ。
使わないものまで要求されていた
XHTMLの時代は終わったんだぜ? <>
Name_Not_Found<>sage<>2014/05/29(木) 20:36:47.55 ID:???<> 今はここまでやっても、正しい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>
この余計な空白によって変なスペースが現れることがあるんだよね。 <>
Name_Not_Found<>sage<>2014/05/29(木) 21:32:24.71 ID:???<> >>973
それってブラウザ間の振る舞いで解釈が異なることって無いの?
厳密に仕様になってるの? <>
Name_Not_Found<>sage<>2014/05/29(木) 21:48:43.30 ID:???<> >>974
HTML5を勉強しろよ。
HTML5対応、つまり最近のブラウザは全て厳密な仕様になっている。
さらに不正なタグをどう解釈するかまで厳密な仕様になってる。
ブラウザが仕様を満たしている限り、間違った書き方を含めて
どんな書き方をしても、同じようレンダリングされる。 <>
Name_Not_Found<>sage<>2014/05/29(木) 21:49:17.84 ID:???<> 訂正
×同じようレンダリングされる。
○同じよう解釈される。 <>
Name_Not_Found<>sage<>2014/05/29(木) 21:51:14.65 ID:???<> 変なブラウザがないとも限らないから
一般的な書き方するのが一番いいだろ <>
Name_Not_Found<>sage<>2014/05/29(木) 21:54:04.27 ID:???<> 省略可能な事と実際に省略するかは別だけどね
if (a === 1) b = 2 // {} を省略可能 <>
Name_Not_Found<>sage<>2014/05/29(木) 21:56:34.11 ID:???<> >>977
変なブラウザは、一般的な書き方をしても
間違った解釈をするわけだから、言っていることに意味が無い。
通常は変なブラウザのことまで考える必要はない。
変なブラウザにぶち当たってから考えればいいことを
今考えてはいけない。
そして>>973は正しいHTMLであり、一般的な書き方をするというならば
これこそが一般的な書き方。
一般的な書き方を知らない無知な>>977が
一般的じゃないと思い込んでるだけ。 <>
Name_Not_Found<>sage<>2014/05/29(木) 21:57:16.65 ID:???<> >>978
XHTMLで一旦省略不可能になった。
それが省略可能に差し戻しになったということは
省略可能な方が良いと判断されたから。 <>
Name_Not_Found<>sage<>2014/05/29(木) 21:58:58.29 ID:???<> >>980
あなたがそう思うのならそうなんだろうね <>
Name_Not_Found<>sage<>2014/05/29(木) 22:00:44.21 ID:???<> >一般的な書き方をしても間違った解釈をする
はい詭弁
あまり使われない機能にバグが残るのは必然
一般的な書き方にバグが残りにくいのは当然の理 <>
Name_Not_Found<>sage<>2014/05/29(木) 22:03:20.28 ID:???<> HTML5は互換性のためにあえてルーズな書き方を許容しているだけだし、あえて省略して視認性を損ねる理由もないので俺は省略しない <>
Name_Not_Found<>sage<>2014/05/29(木) 22:13:50.75 ID:???<> GoogleのHTMLガイドにも書いてるし、気にせず省略すればいいと思う
http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml?showone=Optional_Tags#Optional_Tags
XHTMLで省略できないのはXMLの整形式違反になるからであって、XHTML5なら当然省略できない <>
Name_Not_Found<>sage<>2014/05/29(木) 22:17:50.51 ID:???<> >>984
Googleはスピード重視の技術者集団だからそのルールを参考にするのはどうかと思うが
省略すると保守性が低くなる <>
Name_Not_Found<>sage<>2014/05/29(木) 22:33:38.69 ID:???<> 省略できるタグは全て省略しろというのは極端だが、自明なタグは省略すればいい
先に書かれているが</li>なんかは省略せずに空白類文字の問題を解決しようとすると
<li>hoge
</li><li>hoge
</li>
とか
<li>hoge</li
><li>hoge</li
>
とか、これなら省略した方がスマート
<tbody>にしろ</li>にしろHTML5以前からずっと省略可能とされてるし何の心配もいらない <>
Name_Not_Found<>sage<>2014/05/29(木) 22:59:00.44 ID:???<> >>977
一応プログラマなんだから変なブラウザとかあいまいな事言わずに調べろ
http://caniuse.com/html5semantic
ここ見るとHTML5の追加構文はOperaMini以外は全部サポートしている
省略に問題が無いかまでは分からんがHTML5の構文はもう全く問題無く使えるだろ
OperaMiniは当然シカト <>
Name_Not_Found<>sage<>2014/05/29(木) 23:11:56.71 ID:???<> IE6使ってる奴がまだ5%くらいいるんだよなー <>
Name_Not_Found<>sage<>2014/05/29(木) 23:16:03.91 ID:???<> 彼が省略するのは勝手だが、この押し付けがましさは何とかならんのか <>
Name_Not_Found<>sage<>2014/05/29(木) 23:47:50.15 ID:???<> >>970
よぉまっとうな反論もできないカス野郎 <>
Name_Not_Found<>sage<>2014/05/29(木) 23:50:02.20 ID:???<> ここはHTMLの話するスレじゃねえよ4ねカス共 <>
Name_Not_Found<>sage<>2014/05/29(木) 23:56:44.28 ID:???<> $('.parent').on({
'mouseenter': function(){...},
'mouseleave': function(){...}
}, '.foo');
これを$(document).onでやるには2回$(document).on(mouseenter) $(document).on(mouseleave)と書かなくっちゃダメなんでしょうか? <>
Name_Not_Found<>sage<>2014/05/30(金) 00:02:25.70 ID:???<> onもメソッドチェーンできるみたいだから
$(document).on("mouseover",function(){}).on("mouseleave",function(){}) <>
Name_Not_Found<><>2014/05/30(金) 00:26:01.70 ID:z/9nF5hg<> @
<!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> <>
Name_Not_Found<><>2014/05/30(金) 00:26:45.91 ID:z/9nF5hg<> 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;
} <>
Name_Not_Found<><>2014/05/30(金) 00:27:21.70 ID:z/9nF5hg<> 質問なんだけど@をSample.htmlAをSample.cssと名前をつけて同一フォルダ内に保存したんだけど動かない。
原因わかる人いない? <>
Name_Not_Found<>sage<>2014/05/30(金) 00:33:06.84 ID:???<> >>993
on2回使うのがスッキリしませんが
onをこういう風に使えるとは知りませんでした!ありがとうございますこうします <>
Name_Not_Found<>sage<>2014/05/30(金) 00:52:09.96 ID:???<> >>994のダブルクォーテーションが全角だからじゃないの <>
Name_Not_Found<><>2014/05/30(金) 00:59:52.40 ID:z/9nF5hg<> >>998
半角に変えてみましたがだめでした。。。 <>
Name_Not_Found<>sage<>2014/05/30(金) 01:05:44.82 ID:???<> DataじゃなくてDate <>
1001<><>Over 1000 Thread<> このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。 <>