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

    私的良スレ書庫

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

    元スレ+ JavaScript & jQuery 質問用スレッド vol.7 +

    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
    801 : Name_Not - 2017/10/28(土) 21:52:25.78 ID:???.net (+79,+15,-2)
    きたきたw
    802 : Name_Not - 2017/10/28(土) 22:10:18.01 ID:???.net (+99,+27,-4)
    >>800>>801が同一人物(自作自演)ってのは見抜いた
    803 : Name_Not - 2017/10/28(土) 22:14:08.63 ID:???.net (+5,-30,-112)
    const縛りすると結局関数型チックに書くことになるじゃん?
    だって
    let {a,b,c} = obj
    のときもしa,cに変更が無ければ
    const {a,c} = obj
    let {b} = obj
    とするの?
    それでやっぱりaは書き換えるとなったらまた変えるの?ってことになる

    そういうちぐはぐ一切なくそうと思えば結局変数は使い切りの関数型チックに書くことになる
    自分は バカバカしい宗教まがいなことだと思うけどね
    804 : Name_Not - 2017/10/28(土) 22:18:28.00 ID:???.net (+63,+30,-57)
    っていうか単純にルールを固く捉え過ぎているだけじゃね?
    Googleもそういう形を想定してはないと思うんだけど
    言ってて流石におかしいと思わないのかね?

    まああえて言えば頑なに歩道を走らない自転車的な感じだな
    805 : Name_Not - 2017/10/28(土) 22:25:05.21 ID:???.net (+3,-30,-84)
    >>803
    関数型チックにするのはすごく良いプログラミング習慣である
    というのはおいといて、おまえ大きな勘違いしてるなぁ。


    > let {a,b,c} = obj
    > のときもしa,cに変更が無ければ
    普通は、abcを変更することがないから
    const {a,b,c} = obj でいいんだよ

    で、なに? bを変更したくなったら?
    そんなもん、 const bb = b + 1 ってすりゃいいだけだろ

    何がチグハグなんだ?
    おまえがやり方知らないから「うわー、letにするしか思いつかねー」
    って言ってるだけじゃんか。本当に情けない
    806 : Name_Not - 2017/10/28(土) 22:29:04.55 ID:???.net (+57,+29,-27)
    あっはっは、自分が出した例を逆に利用されて
    bを書き換えない一番簡単な例をだされて
    こりゃ屈辱だろうなぁ。関数型とか言うまでに
    こんなのも思いつかないようなやつだとはな
    807 : 801 - 2017/10/28(土) 22:44:55.59 ID:???.net (+70,+29,-4)
    >>802
    自演を見誤るようではまだまだだな
    808 : Name_Not - 2017/10/28(土) 22:45:34.11 ID:???.net (+44,+26,-2)
    ほらきたw
    809 : Name_Not - 2017/10/28(土) 22:49:47.43 ID:???.net (+15,-2,-1)
    ↑想定内
    810 : Name_Not - 2017/10/28(土) 22:53:22.18 ID:???.net (+52,+29,-4)
    一人で何やってんだ?
    811 : Name_Not - 2017/10/28(土) 23:00:50.40 ID:???.net (+41,+13,-39)
    以前constの仕様見てこれはすべき!と思ったがIE10以下アウトだったのでやめたことがある
    まだいるからな
    今のところ命名と名前空間で十分かな
    813 : Name_Not - 2017/10/28(土) 23:31:52.56 ID:???.net (+3,-29,-158)
    変数に代入した値を書き換えないっていうのは方針だから
    別にvarであっても書き換えなければ良いだけ

    constが使えないのは諦める原因にはならないよ。
    varを使って書き換えなければそれで十分。
    constは単なるチェック機構にすぎない。

    力さえあればIE10以下でも、constを使うのと同じような
    コードを書くことはできる。ようはconstの何が
    素晴らしいかを理解してそれを実現できるか
    814 : Name_Not - 2017/10/28(土) 23:42:52.61 ID:???.net (+31,-29,-3)
    function(a){
     a=a+ホゲ;
     return a;
    }
    みたいに、aを上書きしない方がいい?
    815 : Name_Not - 2017/10/28(土) 23:50:08.54 ID:???.net (+68,+29,-7)
    >>814
    しない方がいい。
    更に言うならば、引数はもっと変更しないほうが良い。
    816 : Name_Not - 2017/10/28(土) 23:53:25.94 ID:???.net (+13,-30,-71)
    関数のargumentsを書き換えようとしたとき or 同じ関数内で同じarguments名を変数名で使おうとしたときに
    エラー吐くような宣言てなかったっけ?
    function sum(a){
    const a=a+10;
    return a;
    }
    console.log(sum(10));}
    817 : 816 - 2017/10/28(土) 23:55:27.47 ID:???.net (+46,-30,-79)
    途中で送信しちゃった
    >同じ関数内で同じarguments名を変数名で使おうとしたときに
    は816で防げそうだけど、
    >argumentsを書き換えようとしたとき
    はそもそもargumentsは>>815の言うように変更しない、というのを心の中で決めておくってこと?
    818 : Name_Not - 2017/10/29(日) 00:32:26.34 ID:???.net (+70,+29,-16)
    >>817
    何を心配しているのか知らないけど、
    特に心配することなんてなにもないよ。
    推奨されている方法があるなら、理解できないうちは
    それに素直に従っているのが良い。
    819 : Name_Not - 2017/10/29(日) 00:41:21.31 ID:???.net (+16,-30,-94)
    >>818
    例えば
    http://jsfiddle.net/k9ganf4u/
    同じ関数内でzという変数名を使いたいのでブロックに入れました
    が、関数の引数名にzを使っていた場合
    http://jsfiddle.net/k9ganf4u/1/
    Uncaught ReferenceError: z is not definedというエラー文になりました
    SyntaxErrorになってほしいのですが無理でしょうか
    820 : Name_Not - 2017/10/29(日) 01:00:25.13 ID:???.net (+0,-29,+1)
    >>819
    それだったらESLintを使えばできるよ。

    http://goo.gl/ad3hx8
    821 : Name_Not - 2017/10/29(日) 01:02:32.51 ID:???.net (-1,-29,-28)
    no-shadowのルールを有効にするのをお忘れなく
    822 : Name_Not - 2017/10/29(日) 02:54:34.61 ID:???.net (+70,+29,-3)
    結局句点で自演バレしてて哂う>>797
    823 : Name_Not - 2017/10/29(日) 06:23:15.33 ID:???.net (+98,-30,-111)
    イベントを登録するときに度々疑問に思うのですが
    var obj={};
    $().click(function(){
     var hoge=obj;
     console.log(hoge);
    });
    こういう感じでclickのイベントを定義するときに
    外から何かしらの値を代入する(したい)ときがよくあります
    ですが何かモヤモヤするのですがそれで良いのでしょうか?
    824 : Name_Not - 2017/10/29(日) 10:55:42.53 ID:???.net (+104,+29,-10)
    >>824
    言ったそばから句点なしで自演を隠そうとしても無駄w
    825 : Name_Not - 2017/10/29(日) 10:55:59.46 ID:???.net (+35,+9,-13)
    >>823の間違い
    826 : Name_Not - 2017/10/29(日) 12:14:33.66 ID:???.net (+65,+29,-35)
    >>823
    最初から設計とスタイルがカチッと決まっていない場合は
    そういうのを受け入れないと開発が進まない
    827 : Name_Not - 2017/10/29(日) 12:51:58.40 ID:???.net (+100,+29,-3)
    >>823
    その書き方に何の問題もない。
    828 : Name_Not - 2017/10/29(日) 12:54:55.50 ID:???.net (+66,+24,+0)
    >>827
    問題ないんですね。ありがとうございました。
    829 : Name_Not - 2017/10/29(日) 13:50:27.56 ID:???.net (+7,+29,-11)
    >>812
    んなことしなくても注意して書いてればいいだけ
    ただそれも1つの方法だから各々好きにすればいいのさ
    830 : Name_Not - 2017/10/29(日) 13:53:29.63 ID:???.net (+57,+29,-45)
    constがなくても注意して書けばconstを
    使ったのと同じように良い書き方はできる
    ようは注意するかどうか
    注意していればミスなどしない
    831 : Name_Not - 2017/10/29(日) 13:56:25.84 ID:???.net (+57,+29,-46)
    俺としてはconst使おうが使うまいが再代入禁止が
    広まってくれればどっちでもいいよ
    832 : Name_Not - 2017/10/29(日) 14:46:04.24 ID:???.net (+63,+30,-175)
    言っておくけどね、ただの『再代入禁止』は手枷足枷を付けるだけの行為で最悪だぞ?
    あくまで『再代入する必要がない設計』に価値があるんだぞ?
    関数型言語は言語仕様やAPIや環境がそれ向けに整っているから効果があるんだぞ?
    JSの場合、まずその環境を整える必要がある
    だから単なるスタイルの話として語るのは無理がある
    例えばイベント制御にjQuery使うの辞めてRxJSにしようとか、
    そういう具体的な話でなく広く推奨することはできない
    833 : Name_Not - 2017/10/29(日) 15:10:08.45 ID:???.net (+10,-17,-32)
    jQueryをちゃんと使って書けば普通に再代入する必要ないやん?
    834 : Name_Not - 2017/10/29(日) 15:11:38.94 ID:???.net (+25,-2,-58)
    まずその環境を整える必要があるとか言うが
    単に関数型で書きやすくするライブラリである
    jQueryとlodashを導入すれば良い
    835 : Name_Not - 2017/10/29(日) 15:20:50.67 ID:???.net (+50,+17,-25)
    JavaScriptで学ぶ関数型プログラミング
    http://www.oreilly.co.jp/books/9784873116600/

    JavaScript関数型プログラミング 複雑性を抑える発想と実践法を学ぶ
    http://book.impress.co.jp/books/1115101137
    836 : Name_Not - 2017/10/29(日) 17:59:55.28 ID:???.net (+66,+1,-52)
    jQueryはモナドだ とかいうブログあるけどさっぱり分からん
    http://blog.anatoo.jp/entry/20100305/1267801847
    jQueryは関数型言語っぽいってことなんだろうけど
    モナドってなんなんや?
    837 : Name_Not - 2017/10/29(日) 18:29:51.43 ID:???.net (+50,-29,-40)
    >>823
    こういう場合objを引数で渡すのは冗長かな?
    $().click(function(obj){
    その必要ないのはわかるが若干安全なのと
    この関数はこの変数使ってるとすぐわかるので
    長くなってくると特に
    838 : Name_Not - 2017/10/29(日) 18:33:25.21 ID:???.net (+62,+29,-46)
    > こういう場合objを引数で渡すのは冗長かな?
    冗長だね
    なぜならクロージャーっていうのは
    そういう場合に引数で渡さなくて良いように
    作られているから

    クロージャーの「機能」はうまく使うべきだし
    「機能」を捨ててまで冗長化する意味がない
    839 : Name_Not - 2017/10/29(日) 19:26:42.05 ID:???.net (+71,+29,-69)
    >>836 あえて悪い言い方で言うw
    要するに再代入を無くそうという理念でありクロージャとか論外な関数型言語でも
    結局値を保持して再利用するということが一切できないとまともなプログラミングなんて不可能だから
    関数型のメンツをギリギリ保った状態でそれを出来るようにするための苦肉の策
    つまり、モナド=関数型副作用w
    840 : Name_Not - 2017/10/29(日) 20:20:25.52 ID:???.net (+64,+29,-31)
    >>837
    多言語やってるとわかるが値渡しで
    渡した値は関数内でどうしようが勝手、元の値には影響ないよというやつだな
    841 : Name_Not - 2017/10/29(日) 21:01:23.96 ID:???.net (+91,+29,-5)
    >>829-830
    注意してバグが全部防げるなら苦労は無い
    842 : Name_Not - 2017/10/29(日) 21:09:12.45 ID:???.net (+96,+29,-124)
    そもそも再代入しない設計になってるんなら
    再宣言はletだって防げるんだしconstに拘る必要なくね
    つうかどうせ仮にconstで再代入で引っ掛かったとしても
    letに変えるか別の変数増やすだけでしょ
    それが最初からletだったら本当にまずかったって場合は年に1回もないよ絶対
    843 : Name_Not - 2017/10/29(日) 21:20:34.49 ID:???.net (-1,-29,-35)
    constはない話をしてるんだが
    constが使えずletが使えない環境なんてあるのか?
    844 : Name_Not - 2017/10/29(日) 21:42:04.90 ID:???.net (+71,+29,-18)
    >>841
    そりゃそうだ
    だから>>730のような1文字Shift押すか否かの違いはどうなの、って話
    845 : Name_Not - 2017/10/29(日) 23:57:45.60 ID:???.net (+108,+29,-58)
    >>842
    > そもそも再代入しない設計になってるんなら
    > 再宣言はletだって防げるんだし

    letで防げるのは再宣言であって
    再代入ではないですよね?
    自分で書いた言葉理解してますか?
    846 : Name_Not - 2017/10/30(月) 00:10:43.84 ID:???.net (+7,-29,-65)
    constベース気になってたので便乗で質問します
    どうしてもconstを使えない場合はletで
    というのを初心者サイトで見たのですが
    そういう場合というのは,forのvar i=0みたいなところでしょうか?
    847 : Name_Not - 2017/10/30(月) 00:33:05.97 ID:???.net (+28,-30,-140)
    >>846
    いやそうでもない
    ぶっちゃけ今はfor(let i = 0; i < 10; i++) みたいな
    iを+1し続けていくようなコードは書かない
    大抵inやofを使う。この場合constでよい

    指定した回数ループするってことがまず少ないんだが
    その場合は [...Array(3).keys()] のような書き方で
    配列を作って配列の数だけforEachすることで実現できる

    といってもこの書き方は可読性が悪いのでlodashなどを使うのが良い
    _.range(10).forEach(i => console.log(i)) みたいな感じだな
    848 : Name_Not - 2017/10/30(月) 00:48:08.68 ID:???.net (+53,+26,+0)
    なるほど参考にします >>847
    849 : Name_Not - 2017/10/30(月) 00:51:36.47 ID:???.net (+3,-30,-100)
    こっちの書き方のほうが元のfor(var i =0~に
    似ていて分かりやすかったかな?

    for(const i in _.range(10)) {
     console.log(i)
    }

    もしくは

    for(const i in [...Array(10).keys()]) {
    console.log(i)
    }
    850 : Name_Not - 2017/10/30(月) 04:57:15.41 ID:???.net (+108,+29,-46)
    >>845
    再宣言ならまだしも再代入だけを防げて本当に嬉しいケースって滅多に無いだろって意味だろ
    文盲か?
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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