+ JavaScript & jQuery 質問用スレッド vol.8 +
レス数が1000を超えています。これ以上書き込みはできません。
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください
■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
+ JavaScript & jQuery 質問用スレッド vol.7 + [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/hp/1467906819/ >>951
調べるのは引き継ぎ方じゃなくて、clickの中でやってる処理が終わったタイミングを知る方法
それさえわかればasync/awaitなんぞ使わず普通にclick()使えばいい >>952
ではやはりそれぞれの関数が最終的に行っているのは<textarea>のvalueへの文字列の代入ですね… >>932
順序なんて考えたくないでござる!って場合はこれでどうだ
str = '';
$.get("a.js", '', function(response) {
str += response;
$.get("b.js", '', function(response) {
str += response;
$.get("c.js", '', function(response) {
str += response;
$.get("d.js", '', function(response) {
str += response;
});
});
});
});
eval(str); 完全に自分用のjsならこれでいいやろ。順序は絶対に狂わない
エラーは適当に書いてくれ なんで最初っから定数としてundefined用意しなかったの
関数にするとしてもundifined返すための関数なら引数いらなくね
なんでvoid(0)ってしてるの?なにを評価してるの >>958
http://memories.zal.jp/WP/blog/20150504_2542.html
http://blog.yuku-t.com/entry/20111111/1321021731
※下は2011年の古い記事
昔はundefinedを上書きできてしまう仕様だったので、
それに対する保証としてvoid()があったと思われる
>なんで最初っから定数としてundefined用意しなかったの
これは全員思っていると思う
変数でundefinedは正気の沙汰じゃない
つまり今は使う意味が無いと思う >>959
今もundefined変数を定義出来るので、状況によっては必要
(typeof演算子で代用出来るケースがほとんどだと思うが) constと思ってた、違うのか
var undefined = 1
これどうなってるんだ
代入がエラーにならないけど何を代入してもundefined が返ってくる >>958
voidは関数ではなく、演算子だぞ
演算子に(0)を与えるコードが異常 >>961
グローバルコードだろ?
constや関数コード内のvarでやってみろ
グローバル変数を書き換えられない理由はObject.getOwnPropertyDescriptor() jsのundefinedは幾ら何でも特殊すぎる
新しくnullを作って欲しい jsでnullとundefinedって別だよね
他の言語でもそうなの? nullとundefinedが2つ存在して、同値扱いは普通に考えてないんじゃない? null == undefined
>true
null === undefined
>false
やめろ 同値判定でfalse出てんだから同値じゃないじゃん。
どうちてそんなこと言うの? 出とるぞ
null == undefined
>true
同じ形ではないようだが >>968
そうだよ
だから、そもそも同値扱いしかあり得ないし、>>966は考慮にも値しない × そもそも同値扱いしかあり得ないし、
○ そもそも同値扱いはあり得ないし、 ==も===も両方EqualityExpression何だが
仕様書にないオレオレ用語は止めてくれ ・抽象的な等価性比較 (Abstract Equality Comparison) (==)
・厳格な等価性比較 (Strict Equality Comparison) (===) ・=== を使用する 厳格な等価性 (strict equality) ("三重等号" または "同一性 (identity)")
・== を使用する 寛容な等価性 (loose equality) ("二重等号") J.Celko 信者のミックが書いているけど、
データベースでは、3値論理。Ruby もそう。
true, false, null
E.F.Codd は、unknown も加えた、4値論理を唱えたけど、
あまりに複雑すぎて採用されなかった JS, PHP では、必ず厳密等価演算子を使うべき!
使わないと、想定外に型変換されて、バグる
Ruby では、バグる要素が多いから、これを採用しなかった Rubyにおける==,===,eql?,equal?の違い
https://mickey24.hatenablog.com/entry/20100910/1284052782
==
オブジェクトの同値性のチェック
クラスやオブジェクトの性質に合わせて再定義できる
===
オブジェクトの同値性のチェック(所属性を加味)
case式で使われる
クラスやオブジェクトの性質に合わせて再定義できる
eql?
オブジェクトの同値性のチェック(==より厳密)
Hashで二つのキーが等しいかどうかを判定するのに使われる
クラスやオブジェクトの性質に合わせて再定義できる
再定義した場合はhashメソッドも再定義しなければならない
equal?
オブジェクトの同一性のチェック
object_idが一致するかどうかを調べる
再定義してはならない es2015からちゃんとSameValueの考え方が示されてる def 、proc、Proc.new、->、lambda、ブロック、・・挙動と使いどころの異なるこれら関数ライクを使いこなし、
==、===、eql?、equal?の違いと使いどころを完璧に把握しているRuby信者wwwww >>985
これは酷い。この体たらくで簡単だのバグりにくいだのホザいてんだから呆れる。 必ず===を使うべきというのは間違い
どちらかと言えば==を使うべき
ここ20年職場でもネットでも色んな人を見てきたが
==の方が使用頻度かなり高いのにハマった人は同じくらい
例えばよくあるパターンが正規表現でマッチして数値と比べる場合
==を使うと数値と文字列を勝手にいい具合に比較してしまうとしても
===を使っても数値と文字列が意図せずに来てしまうことには対処できない
本当の問題は数値と文字列が意図せず混在しやすいというところにあるからだ
そうしたときに、==だと高確率で実際問題が起きないが、===だと直ちにハマる
いくら潜在的なバグを生みうると言ったって、その確率は経験上こだわる必要がないほど低い >>988
正規表現なら、if(/^\d+$/.test(1234)) のように書くので、===も==も使わない なるほどif(/^\d+$/.test('+1234'))あ、あれ?通らない…(TдT)
if (+1234 == '+1234')は通るのに… >>991
俺がなんでああいう独特な書き方をしたか分からないか?
書いたことはちゃんと理解してくれないと困る
「本当の問題は数値と文字列が意図せず混在しやすいというところにあるからだ 」
と言ってるだろう
君は正規表現でマッチした値を変数に入れたりすることは一切ないのだろうが
世間ではよくあるのだよ 正規表現って何でコーテーションで囲まなくても良いの?
これが良くわからない
replace('/foo/')
としてしまってアレアレってなる >>996
まずJavaScriptのリテラルはこれだけある。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Grammar_and_types#Literals
'foo'は文字列リテラルで、
/foo/は正規表現リテラルだ。
昔からある堅い言語は正規表現リテラルがないから文字列からnewして作ってた。
JavaScriptでもそのような作り方もできる。
new RegExp('foo')
これは/foo/と同じように使える。
詳しくは述べないが厳密にはちょっと異なるのでリテラルで書くことを推奨しておく。 >>996
あとほんとに'foobaz'を'barbaz'に変えるようなreplaceは
'foobaz'.replace('foo', 'bar')と、単純に文字列でいい。正規表現使う必要ない。 >>997-998
そういう事なのか、ありがとう
ずっとよくわからずに使ってた このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 453日 14時間 47分 50秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。