JavaScript 4©2ch.net
迷子なんでここでいいかな? cordova(phonegap)で躓いてるんだけど、専用スレが見当たらない 誘導plz そもそもフレームワークスレがないんだわ 自分で建ててもいいんじゃない webアプリの伝票を表示する画面のHTMLで、テーブルタグでエクセル方眼紙作ってあった 列とか必要以上に多くて無駄にセルの結合してあった 数字の1と文字の1が一致して笑った。 カス言語すぎる。 JSは互換を安易に切れないからな 残りカスのような変な仕様は山ほどある >>249 もしかしてマジでEXCELでデザインしたものを変換してるのかもな explicit宣言で==がsyntaxerrorになったりせんのけ 変数に型がない言語ではどうしても、 == と === 相当の機能が必要になる。 変数に型がない言語では全て同じ。 ID:mqZtRy/B は素直に静的な型宣言を必要とするコンパイル言語を使っとけ 言語としては悪くないが、 将来性として悪い。 BabelなどでES6が使えるようになった今、 CoffeeScriptの役目は終わった。 優位性が無くなったのだから。 CoffeeScriptはES6をつくるための 犠牲になったのだ。 >>259 null == undefinedがありますので >>267 でもこういうクソ仕様はありますね。 2.2.1 - 変換 Luaは文字列と数値を実行時に自動的に変換する。 すべての数学演算は、 文字列に適用されると、一般的な変換ルールに基づいてその文字列を数値に変換しようとする。 ただし、例外があって 2.5.2 - 関係演算子 2.2.1 の変換ルールは等価比較には適用されない。 そのため、"0"==0 は false に評価され、 t[0] と t["0"] は異なったテーブルエントリを示す。 一貫性がない。 NaN !== NaN は他言語でもそうなのかな これだけは直感的でないと感じてしまう >>269 Rubyも同じ http://docs.ruby-lang.org/ja/search/class:Float/version:2.0.0/query:NAN/ > ただし、NaN 同士の比較では常に false を返します。 Pythonでも同様 http://d.hatena.ne.jp/yosshi71jp/20090920/1253415431 > nanは非数(not a number)、infは無限(infinity)。通常、 > この表示になってしまったら、これにどんな演算を行っても、結果はもう変わらない。 PHPでも PHP 型の比較表 http://php.net/manual/ja/types.comparisons.php > この値を、自分自身を含む他の値と比較すると、緩い比較であっても厳しい比較であっても > 結果は FALSE となります (つまり NAN != NAN であり NAN !== NAN であるということです)。 さらにPerlでも http://perldoc.jp/docs/perl/5.6.1/perlop.pod > NaN はどの値に対しても(NaN に対してでさえも) "<", "==", ">", "<=", ">=" の > いずれも成立しないので、これらは全て偽となります。 SQLでも似た仕様がある。 NULL は NULL と等しくない!? http://blog.livedoor.jp/i_am_best/archives/7845603.html >>269 > NaN !== NaN は他言語でもそうなのかな > これだけは直感的でないと感じてしまう 直感的じゃないという意見はわからなくもないが、 他言語でも同じなわけで、それを知らないということは、 君の経験不足ってのがよく分かるねw a = NaN, b = NaN aとbを比較しようとしたときにどういう問題が発生するか考えれば納得出来るだろう >>273 わかりづらいw var a = "a"; var b = "b"; parseInt(a) == parseInt(b) これがtrueだとおかしいだろ? ぐらいのことを言えよ。 は? NaN という状態の意味を考えろよ? 言語でしか考えてなくてコンピュータで処理するってこと微塵も考えてないだろ? >>271 他言語の経験がないのは認めるけど、煽りとかどうでもいいから NaN !== NaN が成立する合理的な理由があるなら教えて欲しい 「他言語でもそうだから」という教科書的な答えでは納得できない >>273-274 その比較はする必要性を全く感じないので、そのコードの目的がわからない null, undefined は等価なのに NaN だけ特別扱いする理由がわからない >>278 nullやundefinedは演算の結果でなるものではない >>278 null や undefined は言語上で特定の意味を与えられた値にすぎない NaN はそれとは全く違う 不正な演算によって生じた結果を表す状態で、これは言語ではなくてコンピュータの仕組みから定義されているもの 「不正な値」だと理解してもらっていい 不正な値なので大小比較自体が成立しないのでその結果も不明となる あとは自分で NaN をググるなり、コンピュータでの数値表現について勉強するなりしてくれ >>279-280 NaN は Number ではない不定値のようなものか 何となくだが、理解した ありがとう しかし大小比較自体が成立しないんだったら 言語側では例外を投げてもいいような気もするが IEEE754で演算上の振る舞いも規定されているのか >>283 "Not a Number" だろう? "Not a Number" からは不定値か固定値かは読み取れないと思うが / {;;;;;;> _八_ :: :| /) ..:::::::::::ヽ ( : | , - ' .. '' {.. :::( 丶 _) | /.... ,.... .. ::: ::: | _/{:::::r‐ ,.::::::::::/ : : } _ イ ::::: {:::::::::}. ... ::: . ´ ^} _... , ィ ... :: .. :: , :::::::::::: .:. . ,' /::: . ´ ゛ :::::: :: ::::::::) ...:::.::. } .. イ:...:: ´ ,..::::::::::::::. ..::::.. :::"゛.. :::: ,' ,.´ ... .:. :: ´(::::::::: ゝ .:::::::ノ ;.. ハ .. ,′ . / {::::::::.. ::: :::: "" :: ...... ⌒ヽ { { /:::. / .... -<:: :::::::(::::::: } レ:::::::::::... { . {ヽ < ::: :: :: :::: { :::::::::::: ヽ {:: .. ___{ ,....:.:.:.:.::ヽ ,. { i:::::::::::: | ヾ:::: ´ ,'.:.:.:.:.:.:.:.:.:. :: .::. ゛"゛ .,′ \ y :.:.:.:: ヾ:: :: :: } .. /: `,´ / . \ ..::.::.::.. ` ::::::ゝ :: ::: ::. / \ ヾ:._.: .. ,:.: − _ン \ ::::: ... .. . "゛ ,..ィ ~ ヽ _ :::: ....:::. ::::::::::_ .ン  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / ヽ / ヽ / 人 ト、 | / >‐ァ / _\ ! jノ / / / /,=彡'⌒ V ,=ミ \ / / / r==彡tテ丁> ∨ /ヽ | \___, // / __ /`¨´ ヽ.ゞ'′ リ ノ / _ノ {' . ′ ⌒≫t示 / < / >ヘヽゞイ ∨ ヽ / ,, ’ ヽ丿 ∨ ! / _ .. ´ `ー _,. -‐'’ / \f⌒ヽ. |  ̄ ヽ ´ / \ ヽ! \ / ! /`≫‐- -‐…‐- \ / ! /`y'´ // ̄) `丶 _ア爪 .' /`y' // / ‘, -‐</ノ ヽ ′/`y' // / L ,-< ∨\ ! _, イヽ/ | し' 丿 | / ヽ. ヽ/ 丁 〉 // | r−、 / / / .′  ̄  ̄ | U `ー― - イ / / ' | U | / ! 若草物語 ナンとジョー先生 これからjavascript一本で生きます よろしくおねがいしまうー よくsetTimeoutつかって関数を一定時間繰り返し実行する例を見るけど メモリリーク(スタックオーバーフロー)しそうな気がしてならねえ function viewTime() { var date = new Date();//これはスタックに貯まるのか? console.log("date = " + date); setTimeout(viewTime,1000); } ああ違う、非同期だからsetTimeoutが終わった時点で消滅するのか 納得 ローカル変数なんだから関数終了で破棄されるだろ 非同期とか割り込みとか関係無い >>296 わからんやつだな setTimeout が 指定時間後に実行する関数を設定しているだけでそこで呼び出してるわけじゃない ってすぐに理解できてないと viewTime() setTimeout() viewTime() setTimeout() viewTime() ... みたいに再帰呼び出ししてるように錯覚しちゃうってことだろうよ 再帰呼び出しなら呼び元は終了してないからやばいよね 次の段階として、非同期で呼ばれるとなんとなく理解はしていても 別のコンテキストで実行されるってのがわかってないと this とか使ってあれえ?ってなことになる >>297 それは仮想的なコードだと思うけど、クロージャじゃないんだから一回毎に viewTime 内のメモリはGCが解放してくれないとおかしいんじゃない? そうでなければ、ブラウザのバグだと思うけど じゃあここでいいぞ。 一応俺のスタンスを言っておくと、俺はお前みたいな奴が嫌いじゃない。 お前はあのスレの中で唯一積極的にコードを書き、IDを付けて議論に持ち込み、論理的に解決しようとする。この点はいい。 ただなあ、技術的に余りにも稚拙すぎるから、色々空回りしている。 だからやる気があるのなら少しはサポートしてやるよ。上達したいかどうかはお前が決めろ。 ちなみにマジでウザイから無駄に吠えるのは止めろ。お前が大したことがないのは事実なんだよ。 今のお前ではあのベンチマークがどれだけ間抜けなことになっているのか分からないのだろうが、 上達した後から読み返せば今のお前の痛さは発狂レベルだぞ。 まあ、今のお前には俺が嘘を言っているとしか思えないのだろうけども。 とはいえ、あのスレの中の初心者で上達する可能性があるのはお前だけだ。 他の馬鹿共はお前と同様にあのベンチの問題が分からないにもかかわらず、煽ることしかできない無能共だ。 そもそも俺はお前みたいに「自分でやる」タイプじゃないとプログラミングには向かないと思っているので、 一から教えてくださいとか言われても死ねとしか思わない。 だからあのスレにたむろしている馬鹿共が何であそこにいるのかも謎なんだが。 もしやるのなら、こちらのスレの内容は向こうには投稿しないように。ゴミ共が増えるだけだから。 ベンチマークの結果がデタラメすぎるので訂正したくなると思うが、その必要もない。 心配せずともJavaScriptの個人的Web情報はデタラメばかりだし、 馬鹿は馬鹿のままでいればいいし、強制的に教育する方法もないんだよ。 今のお前のように、自分で馬鹿を止めますと決心させるしかないんだ。 そして自分で学ぼうとする心がある奴は、あの経緯ならこちらを見ている。だから、転載する必要は全くない。 マジであのスレ終わっているぞ。いろんな意味で。 まあとにかく、どうするかはお前が決めろ。 with(this){してその中でプロパティ読むのってアリ?} withはjavascriptの汚点。今すぐ脳内から消去しろ。 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、 BitTorrentがオープンソースで開発されています 言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか? Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします https://twitter.com/Lyrise_al ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw The Covenant Project 概要 Covenantは、純粋P2Pのファイル共有ソフトです 目的 インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します 特徴 Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW) 接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です DHTにはKademlia + コネクションプールを使用します UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります) 検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません : たまにwithあったらなって思うことはあるな 例えばWebpackがモジュールに引数で渡す挙動とか http://www.cybersyndrome.net/ ここの検索結果画面、例えば http://www.cybersyndrome.net/search.cgi?q=& ;a=&f=&s=&n= からプロキシ一覧を取得しようとしてXMLHttpRequestを使ってresponseTextを見てるんだけど どうもscriptを動かさないとプロキシが表示されないみたい そんなわけでresponseTextの中の3番目のスクリプトを動かしてプロキシ一覧を表示させたいんだけど どうするのが良策ですか?ちなみにChrome java挫折したんでこっちにきました だいぶとっつきやすい・・・気がする ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の 両院で、改憲議員が3分の2を超えております。 『憲法改正国民投票法』、でググってみてください。国会の発議は すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ javascriptで配列の要素それぞれに関数を作用させて要素を作るってできますか? var a = [1,2,3]; function f(x){return x+1;} var b = f(a);// b = [2,3,4]; みたいな javascriptの正規表現で A/B/C(http://hoge.com/fuga )/X/Y このような文字列を/で分割したいが、()の中の/は分割の対象にしない ということはどのようにすればいいでしょうか? >>324 括弧がネストしてなければnegative lookahead”(?!)”で ネストしてたら知らん https://regex101.com/r/j03SqS/2/ ありがとうございます ネストしてないのでこれで事足りそうです XMLHttpRequestを使って取得したページのスクリプトを実行させようとしているのですが できません 取得したページを構成 var doc =document.implementation.createHTMLDocument(""); doc.body.innerHTML =req.responseText; このdocの中のscriptタグを取り出し 新たにscript elementをdoc.createElement("script")で作りコピーし 更にappendChildでスクリプトを追加し直せば実行されるかと思いましたがされませんでした(Chrome) なにかいい知恵はないでしょうか 今ふと思ったのですが 作っているものがChromeの拡張機能なのでセキュリティ設定で外部のスクリプトができないようになってるだけかもしれません ちょっと見直してきます なるほど とりあえず目的に対して別の方法を思いついたのでスクリプトの再実行はやめておきます 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 9O7AM "abcde?fgh".match("e?f") これが ["f", index: 6, input: "abcde?fgh", groups: undefined] になるんですが(chromeブラウザのコンソールで確認) 文字列の中の?ってどういう扱いなんでしたっけ? match("e?f")の"e?f"は文字列リテラルじゃなくて正規表現/e?f/と解釈されるということですか? javascriptのオブジェクトの書き方で {hoge:hoge}とかこうとして{hoge,hoge}と書いてエラーにならなかったんですが これって有効なんですかね? あーわかりました var a = 2; で var x = {a}; とすると var x = {a:2}; と同じになるんですね >>338 勉強になります https://mevius.5ch.net/test/read.cgi/tech/1489511075/862 で質問した者なのだけど、 String.matchとRegExp.execの挙動の細かい違いについて分かる人居る? 仕様書はMDNから飛べるけど一応以下。 https://tc39.es/ecma262/#sec-string.prototype.match https://tc39.es/ecma262/#sec-regexp.prototype.exec 正直俺はよく分からない。 問題になるのは質問した内容で、再掲すると、 '@time;prop1:style1;prop2:style2'.match(/(^|[@;])[^@;]*/g); // 結果 ["", ";prop1:style1", ";prop2:style2"] 、俺の想定 ["", "@time",";prop1:style1", ";prop2:style2"] '@time;prop1:style1;prop2:style2'.match(/(^.|[@;])[^@;]*/g); // 結果 ["@time", ";prop1:style1", ";prop2:style2"] 、これは納得 の前者の挙動が謎だったのだが、 var re = /(^|[@;])[^@;]*/g; var str = '@time;prop1:style1;prop2:style2'; re.exec(str); // 結果 ["", ""] console.log(re.lastIndex); でちまちま調べる限り、lastIndexは0のまま固定されており、俺の『正規表現の』理解は間違いではないことは分かった。 当然これだとMDNのexecにあるような while ((myArray = myRe.exec(str)) !== null) みたいなことをすると無限ループする。 だから String.match はそうならないように何かしら対策がしてあって、結果、頭のマッチが取れないようだ。 なのだが、仕様書を見ても違うのは分かるが何がどうなのかよく分からない。 String.matchでは (^| の条件は駄目で、 (^.| のように、「文頭」ではなく「文頭の文字」に当たるようにしないといけない、ということなのか? すいません分かりました。 String.match は RegExp[@@match] を読んでて、その中で RegExp.exec を呼んでいる。 RegExp.exec は当然そのまま RegExp.exec を呼んでいる。 だからそのままだと当然挙動は同じになるのだけど、String.matchの場合、 > 4. If matchStr is the empty String, then > a. Let thisIndex be ? ToLength(? Get(rx, "lastIndex")). > b. Let nextIndex be AdvanceStringIndex(S, thisIndex, fullUnicode). > c. Perform ? Set(rx, "lastIndex", nextIndex, true). https://tc39.es/ecma262/#sec-regexpbuiltinexec って書いてあったわ。 つまりマッチ結果が空文字だと必ず一文字進めるようになっており、「文頭マッチのフラグを落とす」仕様にはなってない。 この仕様でいいのか?という気もするが、とにかくそうなっているようだ。 お騒がせしました。 というかこれはMDNに注意書きがいる案件だ。 勿論君の手柄にしてくれていいから、誰かやっておいてくれ。 追記は取り敢えず4ヶ所(3文案)か? 1. String.match に、 「空文字にマッチした場合、その空文字の次の文字にはマッチしません。 このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が結果に含まれないことがあります。」 2. String.replaceに、 「空文字にマッチした場合、その空文字の次の文字にはマッチしません。 このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、全てのマッチ文字列が置換されないことがあります。」 3. RegExp.exexとRegExp.testに、 「空文字にマッチした場合、lastIndexが更新されません。(+1されません) このため、空文字マッチを含む正規表現(オブジェクト)を与えた場合、 ループ内でマッチ結果の空文字判定を行わないと、無限ループします。」 問題となるケースは、空文字マッチを含む正規表現+空文字マッチ直後にマッチ文字列が来る場合。 具体的には>>341 searchはgマッチ関係ないからセーフ、 splitに関係するケースがあるかは分からない。(ぱっとは思いつかない) matchAllは知らん。 ちなみに以前 test について文句を言った者だ。これについて対応してくれた人はありがとう。 今回も頼むわ。 なお今確認すると、 > 注目すべきは、別な文字列で検索しても lastIndex がリセットされないことです。 > https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test とモロに書いてあって素晴らしい。ただこれはもっと赤字とか目立つように書くべきだが。 俺はWeb板は無視しているが、これについてだけは告知貼っておく。 いずれにしてもMDNの更新誰かよろしく。 俺は全世界の問題を一人で背負い込むほど若者ではないんだよ。 MDNの決定プロセスなんて知らんし、 それ以前に他人が噛むことにより「承認」の手続きがなされ、よりましな方向になると信じてる。 バグを見つけるのも十分な貢献だし、それをMDNに記載するのも同様だ。 だから一人でやる必要も意味もないし、それ以前に一人でやるべきではないと思ってるんだよ。 お前らが「こんなのMDNに記載する必要なし」と思うのなら放置でよし、 「こんな落とし穴があるのなら共有すべきだ」と思うのなら、 俺はテストパターンを提供したのだから、お前らはMDNを書き直すことによってcontributeしろ、ということ。 read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる