のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,831人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    251 : Name_Not - 2018/12/09(日) 13:35:42.83 ID:???.net (+29,-10,-23)
    >>250
    そもそも何故同じにしたいのか
    全部WebAudioAPIで処理すればいいじゃない
    252 : Name_Not - 2018/12/09(日) 13:39:42.66 ID:???.net (+57,+29,-25)
    Bがジェネレーターとして重い処理を書かないほうがいいのかと聞いてるのなら
    毎回評価されるという解になるな
    253 : Name_Not - 2018/12/09(日) 14:07:49.29 ID:???.net (+96,+29,-60)
    いやジェネレータからイテレータ取り出してんのは最初だけだろ。
    前回のyieldから次のyieldまでの処理は当然毎回走るが、それは当たり前じゃん。毎回走ってほしい部分が走ってほしくないってどんな状況よ
    254 : Name_Not - 2018/12/09(日) 14:17:44.60 ID:???.net (+38,-30,-68)
    for (let i of [1, 2, 3]) {console.log(i)}
    の結果が1 2 3になるか1 1 1になるかを自分で確かめることすら車輪の再発明()とか言ってやりたがらないとかクズ過ぎる。
    質問回答のコミュニケーションコストの方がよっぽど高くつくと思うのだが。
    255 : Name_Not - 2018/12/09(日) 15:55:22.63 ID:???.net (+31,-30,-38)
    確かめるなら
    for(let i of hoge()){
    }

    function hoge(){
    console.log('hoge')
    return [1, 2, 3]
    }

    じゃない?
    256 : Name_Not - 2018/12/09(日) 17:08:42.17 ID:???.net (+63,+29,-7)
    >>255
    うむ。>>254は罵っといて自分が理解してないという最高級のダサさ。
    257 : Name_Not - 2018/12/09(日) 17:28:15.53 ID:???.net (+70,+29,-4)
    >>253
    当たり前とも言えるがそこは隠蔽されてもいるんだからさ
    258 : Name_Not - 2018/12/09(日) 20:46:13.90 ID:???.net (+0,-30,-59)
    どうでもいいけど何でforでlet使ってるの?
    constにしないの?

    for (const i of arr) {
    }
    259 : Name_Not - 2018/12/09(日) 21:53:42.73 ID:???.net (-3,-26,+0)
    >>258
    古いブラウザ対策
    260 : Name_Not - 2018/12/09(日) 22:04:02.01 ID:???.net (+89,+29,-22)
    質問者がlet使ってるからでしょ
    エラーでもないのに関係ないとこ変えると回答の本質がぼやける
    261 : Name_Not - 2018/12/09(日) 22:47:08.32 ID:???.net (-1,-29,-28)
    letで十分なのにconstを使う必要がない
    262 : Name_Not - 2018/12/09(日) 23:09:30.98 ID:???.net (+64,+29,+0)
    >>260
    確かにそうだな、すまん
    263 : Name_Not - 2018/12/10(月) 01:55:40.06 ID:???.net (+7,-30,-173)
    むしろなんでここでconst置けるような仕様にしたのか委員会を問い詰めたい。
    ループ毎に値が変わる変数をconst宣言できるとかw
    for-ofの()内はconst禁止でよかった。var/letなら直感に反しない。
    トップレベルでは…
    const A = 1;
    A = 2; // エラー
    なのにfor-ofでは…
    for (const A of [1, 2]) {
    console.log(A);
    }
    1
    2 // for-ofちゃんナニ勝手にconst改変してくれちゃってんの??自分のスコープだからってやりたい放題か!?こんな無法が許されていいのか!!
    264 : Name_Not - 2018/12/10(月) 02:13:16.11 ID:???.net (+38,-29,-63)
    え?マジで言ってる?
    for-of のlet/constはループ毎に毎回宣言してるのと同じじゃん
    constによる最適化も期待できるんじゃないの
    265 : Name_Not - 2018/12/10(月) 06:42:38.87 ID:???.net (+47,+29,+0)
    かいへん……?
    266 : Name_Not - 2018/12/10(月) 09:11:15.07 ID:???.net (+35,-30,-119)
    >>263
    const以前に、ブロックスコープの挙動は理解してないような

    for (let i = 0; i < 4; i++)
    document.addEventListener('click', e => console.log(i), false);
    267 : Name_Not - 2018/12/10(月) 09:31:59.65 ID:???.net (+94,+29,-45)
    >>264
    毎回宣言ってどういう事?
    一回だけじゃないの?

    constで宣言すれば最適化で早いのは分かる
    268 : Name_Not - 2018/12/10(月) 10:28:43.08 ID:???.net (+52,+29,-4)
    細けーことで悩むな
    269 : Name_Not - 2018/12/10(月) 12:29:49.90 ID:???.net (+65,+27,-39)
    >>267
    宣言は1回だが、ブロックスコープはループ毎に発生してる
    >>266の挙動を確認すれば分かる
    270 : Name_Not - 2018/12/10(月) 13:04:22.54 ID:???.net (+57,+29,-55)
    違う。ブロックスコープが毎回発生するのは当たり前でそれだけでは説明できない。
    それとは別に初期化句の変数宣言は特別扱いされる。
    271 : Name_Not - 2018/12/10(月) 13:06:43.09 ID:???.net (+82,-30,-260)
    いやうまいことなってんだろうけどさ、
    せいぜい>>264みたいな理解になるわけよパッと見。
    const A = 1
    const A = 2 // エラー
    なのにfor ofのカッコの中に書くのはなんで許されるのって。
    for (const A of [1, 2]) {
    console.log(A);
    }

    {
    const iter = [1, 2][Symbol.iterator]()
    while (true) {
    const {value: A, done} = iter.next()
    if (done) break;
    console.log(A)
    }
    }
    のような動作になるだなんてfor of構文の見てくれからは推測不可能だろ。
    for (const A of [1, 2])の字面だけ見たらループごとにAに1、2と代入されるように見える。
    というか明らかにそう見えるような構文にしてる。
    そう見えるようにしたいんだったらその場所ではconst禁止にしとけって話。
    272 : Name_Not - 2018/12/10(月) 16:05:03.08 ID:???.net (+4,-30,-34)
    俺も似たようなことを思ったことがある

    for(const i = 0; i < a.length; i++)

    はエラーになるんだよな。
    273 : Name_Not - 2018/12/10(月) 16:28:24.39 ID:???.net (+55,+15,-74)
    初学者が横から疑問が湧いたのですが

    逆にどうしてfor-ofではlet Aじゃなくてconst Aを使うべきだと言えるのか、良く分からないです
    だってループ自体の目的がAを改変することだったらletかvarにするしかないですよね?
    それともfor-ofではAに渡されるのはBの一部の実体ではなくコピーなんですか?
    (Aを書き換えてもBには反映されない)
    だとしたらとんでもなく用途が限られるように思うのですが。
    274 : Name_Not - 2018/12/10(月) 16:31:14.65 ID:???.net (+46,+18,-19)
    ×Aを改変
    ○Aを加工

    と言ったほうが適切でしたかね
    275 : Name_Not - 2018/12/10(月) 16:36:20.71 ID:???.net (+26,+8,+1)
    ミューテート
    276 : Name_Not - 2018/12/10(月) 16:47:21.15 ID:???.net (+14,-29,-46)
    .valueでinputのテキストボックス内に代入するとsubmitボタン押しても無反応になります
    手動でキーボードから代入すると問題ないのですが何が原因なのでしょうか
    277 : Name_Not - 2018/12/10(月) 16:51:13.25 ID:???.net (+14,-8,+0)
    エラーくらい貼れ
    278 : Name_Not - 2018/12/10(月) 17:02:44.45 ID:???.net (+42,+14,-21)
    強いて言うと、エラーは無反応です
    コンソール開いてconsoleとnetworkみてもウンともすんともです
    279 : 276 - 2018/12/10(月) 17:22:42.89 ID:???.net (+4,-30,-89)
    自己解決です>>276
    エラーをあらためて探っていると
    コンソールの各エラー項目の表示非表示チェックボックスが乱れていました
    で、全部表示するようにしたら
    TypeError: X[g].exec is not a function
    というエラーが出てきました
    どうやらObject.prototypeをいじっていのがいけなかったようです
    関数にしたらsubmitも反応してくれるようになりました
    280 : Name_Not - 2018/12/10(月) 18:27:55.41 ID:???.net (+7,-30,-141)
    >>272
    そりゃ i++ で変更してるし
    同じくforと名乗ってても~.forEach()に似た物と素直に考えられるかどうかかなぁ

    >>273
    jsでの代入や関数呼び出しと同じでAに入るものがプリミティブ型であればコピー、オブジェクト型であれば参照なので
    for...of/for...inでletを使ったとしても変数Aに何かを代入してもBに反映されない
    Aがオブジェクトならconstでもプロパティは変更できて参照元のオブジェクトにも反映される

    perlやphpのような書き戻し可能なforeachの方がバグの温床になるような気がするけどね
    281 : Name_Not - 2018/12/10(月) 18:31:51.18 ID:???.net (+11,-30,-191)
    >>271
    それいいな。
    const forOf = (iterable, callback) => {
    const iter = iterable[Symbol.iterator]()
    for (let {value, done} = iter.next(); !done; {value, done} = iter.next()) callback(value)
    }
    Array.prototype.forEachと同じ感じで使える
    forOf([1, 2], A => {
    console.log(A)
    })
    1
    2
    forOf('ab', A => {
    console.log(A)
    })
    "a"
    "b"
    ループの一時変数にletだconstだのムダな議論なくなるし。
    まあ[...iterable].forEachでいいか…
    282 : Name_Not - 2018/12/10(月) 18:42:28.40 ID:???.net (-1,-29,-36)
    そもそもScalaみたくfor...ofならvarもletもconstも不要で自動的にconst扱いにすれば良かったんよ
    将来的にそうなってほしい
    283 : Name_Not - 2018/12/10(月) 18:56:21.86 ID:???.net (+64,+29,-73)
    >>271
    めっちゃ正論ティー
    constの方がほんの少しパフォーマンス上がるとは言えほんの少しだし、
    マイニングでもやらない限りconstで書く方がデメリットデカイ気がする
    284 : Name_Not - 2018/12/10(月) 20:46:28.65 ID:???.net (+96,+29,-30)
    >>271
    ただ単に多くの言語の挙動に合わせただけ
    その方がいろいろと都合がいいでしょ?
    285 : Name_Not - 2018/12/10(月) 21:07:37.56 ID:???.net (+4,-30,-75)
    >>281
    これで十分なものをなぜわざわざfor(const/let/var item of iterable)とか言うクソ構文を作ったのか
    for(const item of iterable)と書かれて仕様知らないやつが初見でitemがループ毎に違う値入ってるとは夢にも思わないだろ。
    286 : Name_Not - 2018/12/10(月) 21:09:13.59 ID:???.net (+4,-29,-19)
    お前らが何を言ってんのか理解できん
    for-ofでのletとconstはまったく違うし、どっちも必要
    287 : Name_Not - 2018/12/10(月) 21:18:45.52 ID:???.net (-1,-29,-61)
    console.logってbashでいうechoみたいにコードが読み込み・実行される際にしか出ないもんだと思ってたけど、あとから更新されたりするの?
    288 : Name_Not - 2018/12/10(月) 21:23:03.05 ID:???.net (+58,+22,+0)
    >>284につきるとしか
    289 : Name_Not - 2018/12/10(月) 21:46:16.96 ID:???.net (+18,-30,-96)
    >>286
    お前こそなに言ってんだ。for ofでletは不要。
    let B = [1, 2]
    for (const A of B) {
    A = 6
    console.log(A);
    }
    //=> エラー

    let B = [1, 2]
    for (let A of B) {
    A = 6
    console.log(A);
    }
    //=> 6 6
    console.log(B)
    //=> [1, 2]
    290 : Name_Not - 2018/12/10(月) 21:54:04.08 ID:???.net (+13,-16,-33)
    >>289
    まあconstのほうがお行儀がいいしlet使うことはないかも
    ところで君はまだfor-ofの構文についてわかってないようだね
    291 : Name_Not - 2018/12/10(月) 21:57:58.65 ID:???.net (+38,+20,+0)
    自己紹介乙。
    292 : Name_Not - 2018/12/10(月) 22:00:51.11 ID:???.net (+0,-29,-8)
    >>289
    間違いを防止するって意味なら結構アリだね
    A==6と間違えてのA=6とか
    293 : Name_Not - 2018/12/10(月) 22:01:45.15 ID:???.net (+37,+19,-2)
    他の話題くれ
    294 : Name_Not - 2018/12/10(月) 22:03:23.53 ID:???.net (+22,+29,-14)
    初心者でjs勉強終わった人がフロントのフレームワークで何からやった方がいいかの議論
    295 : Name_Not - 2018/12/10(月) 22:11:05.18 ID:???.net (+57,+29,-45)
    jsのフレームワークって小回り効かないのがなぁ
    jQuery辺りのライブラリで十分、というか生jsしっかり覚えたほうがつぶしが利いて良い
    296 : Name_Not - 2018/12/10(月) 22:15:02.05 ID:???.net (+57,+29,-57)
    jqueryやったことない頃
    生jsだけはしっかり把握してたから、実装は出来ないものの人のコードは読めたわ
    まぁ他の言語も同じだけどね
    297 : Name_Not - 2018/12/10(月) 22:19:50.40 ID:???.net (+34,+11,-3)
    生js…ゴクリ
    298 : Name_Not - 2018/12/10(月) 22:26:25.92 ID:???.net (+51,+28,+0)
    毎日生js突っつきマワしてます
    300 : Name_Not - 2018/12/10(月) 22:58:46.29 ID:???.net (+20,-29,-17)
    vue.jsは?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について