constと副作用とワイ
constと副作用とワイ:
ワイ「今日はやることないからJavaScriptのお勉強でもしよか」
ワイ「なんかしとらんと酒飲んでまうからな」
ワイ「ほな新しめのJavaScriptであるES2015のお勉強でもしてみよか」
ワイ「ES2015、入門・・・検索、と」
ワイ「お、ワイの大好きな人斬りエンジニア塾はんのサイトが出てきたで」
ワイ「ほな読んでいこか」
ワイ「ほー、ES2015ではconstいうんを使って定数を宣言できるんか」
ワイ「constで宣言した定数は、再代入が出来ひんようになっとるから、一度宣言したら常に同じ値である事が保証されてんねんな」
ワイ「うーん、でも別にconstなんて無くてもプログラムなんて書けそうやけどなあ」
ワイ「むしろ再代入できるほうが便利やないか?」
ワイ「constはどんな時に役立つんやろか・・・」
ワイ「値が変わらんことが保証されとると便利なとき・・・」
ワイ「どんな時や・・・」
ワイ「せや」
ワイ「こんな時に役に立ちそうやな」
ワイ「定数 a が宣言された後に色んな関数が実行されとるけど、aの値が3やって事は保証されとるから分かりやすいな」
ワイ「3に決まってんねんもん」
ワイ「これがもしvarやletで宣言した変数やったら」
ワイ「changeっていう関数はなんや?」
ワイ「aの値をなんか変えてるんちゃうか?」
ワイ「resetって何?」
ワイ「なんかaに影響あたえてるんちゃう?」
ワイ「destroyAllって何?」
ワイ「明らかに全てを破壊しそうやん・・・」
ワイ「って色々と心配になってお酒を飲んでしまったり」
ワイ「それぞれの関数の中を見に行ったりせなあかんけど」
ワイ「aの値が変わらない事が保証されてるなら安心やもんな」
ワイ「それはconstで宣言するメリットかもな」
ワイ「なにかの関数の副作用で知らん間にaの値が変わっとった!!!いうことが無いからな」
ワイ「基本的になんでもconstで宣言して、再代入が必要なやつだけletにしといたら良さげやな」
ワイ「varはletの下位互換みたいなもんやから、もう要らんやろ」
ワイ「varはもう仕様から削除してほしいわ」
オカン「そらええな」
オカン「削除したらお前が昨日まで書いとったコード動かへんくなるけどな!」
ワイ「せ、せやな」
ワイ「でも、ワイみたいなザコーダーやと、」
ワイ「constで宣言するのを忘れて、クセでvarを使ってしまうかもしれんから」
ワイ「一抹の不安が残るな・・・」
ワイ「あと」
ワイ「こんな感じで」
ワイ「constで宣言してても配列の要素追加とかは出来てまうんやな・・・」
ワイ「ほな、なんかの処理の副作用で、」
ワイ「配列の中身が知らん間に変わってまうかもしれんな・・・」
ワイ「むぅ」
ワイ「その点も不安やな・・・」
ワイ「不安やから、酒飲んどこ・・・」
〜飲酒、そして就寝へ〜
ワイ「今日はやる事ないから純粋関数型言語Elmのお勉強でもしよか」
ワイ「なになに」
ワイ「ふむふむ」
ワイ「え・・・」
ワイ「Elmではそもそも再代入する術がないんか」
ワイ「こう書くだけでもう不変やって。」
ワイ「再代入しようとしたらコンパイルエラー起きんねんて。」
ワイ「ほな普通に書いとくだけで、」
ワイ「なんかの処理の副作用で知らんうちに値を変えてもうとったわ!!!」
ワイ「って事がないんやな」
ワイ「あと配列・・・やなくてListか」
ワイ「リストに要素を追加しようとしてもそれは新しく別のリストが作られる感じになるから」
ワイ「元のリストはちゃんと残っとるんやな」
ワイ「JSのconstみたいな心配も大丈夫、いうわけやな」
ワイ「ほかにも」
ワイ「なんかをアレしたら、知らん間に他のなんかも変えてもうとった!!!」
ワイ「みたいな副作用が極力発生せんように言語自体が作られてんねんなー」
ワイ「しかも最終的にはJSにコンパイルされるんやって」
ワイ「間違って副作用を起こす事が少ない純粋関数型言語でフロントエンド開発ができんねんなー」
ワイ「昨日は、変数の値が変わってしまわへんか心配になってお酒を飲んでしもうたけど」
ワイ「今日はそんなことあらへん」
ワイ「今日は祝杯や」
ワイ「新しい言語との出会いにな」
オカン「結局飲むんやないか」
〜おしまい〜
35歳無職ワイ
ワイ「今日はやることないからJavaScriptのお勉強でもしよか」ワイ「なんかしとらんと酒飲んでまうからな」
ES2015のお勉強
ワイ「ほな新しめのJavaScriptであるES2015のお勉強でもしてみよか」ワイ「ES2015、入門・・・検索、と」
ワイ「お、ワイの大好きな人斬りエンジニア塾はんのサイトが出てきたで」
ワイ「ほな読んでいこか」
ワイ「ほー、ES2015ではconstいうんを使って定数を宣言できるんか」
const a = 3; a = 4; // エラー!
再代入できないと何が嬉しい?
ワイ「うーん、でも別にconstなんて無くてもプログラムなんて書けそうやけどなあ」ワイ「むしろ再代入できるほうが便利やないか?」
ワイ「constはどんな時に役立つんやろか・・・」
ワイ「値が変わらんことが保証されとると便利なとき・・・」
ワイ「どんな時や・・・」
こんな時にconstは役に立つ
ワイ「せや」ワイ「こんな時に役に立ちそうやな」
const a = 3; change(a); reset(a); destroyAll(); console.log(a); // 何が表示される?
ワイ「3に決まってんねんもん」
ワイ「これがもしvarやletで宣言した変数やったら」
ワイ「changeっていう関数はなんや?」
ワイ「aの値をなんか変えてるんちゃうか?」
ワイ「resetって何?」
ワイ「なんかaに影響あたえてるんちゃう?」
ワイ「destroyAllって何?」
ワイ「明らかに全てを破壊しそうやん・・・」
ワイ「って色々と心配になってお酒を飲んでしまったり」
ワイ「それぞれの関数の中を見に行ったりせなあかんけど」
ワイ「aの値が変わらない事が保証されてるなら安心やもんな」
ワイ「それはconstで宣言するメリットかもな」
ワイ「なにかの関数の副作用で知らん間にaの値が変わっとった!!!いうことが無いからな」
ワイ「基本的になんでもconstで宣言して、再代入が必要なやつだけletにしといたら良さげやな」
ワイ「varはletの下位互換みたいなもんやから、もう要らんやろ」
ワイ「varはもう仕様から削除してほしいわ」
オカン「そらええな」
オカン「削除したらお前が昨日まで書いとったコード動かへんくなるけどな!」
ワイ「せ、せやな」
しかし気になること
ワイ「でも、ワイみたいなザコーダーやと、」ワイ「constで宣言するのを忘れて、クセでvarを使ってしまうかもしれんから」
ワイ「一抹の不安が残るな・・・」
ワイ「あと」
const arr = [3, 4, 5]; arr.push(6); // エラーにならない。
ワイ「constで宣言してても配列の要素追加とかは出来てまうんやな・・・」
ワイ「ほな、なんかの処理の副作用で、」
ワイ「配列の中身が知らん間に変わってまうかもしれんな・・・」
ワイ「むぅ」
ワイ「その点も不安やな・・・」
ワイ「不安やから、酒飲んどこ・・・」
〜飲酒、そして就寝へ〜
翌朝
ワイ「今日はやる事ないから純粋関数型言語Elmのお勉強でもしよか」ワイ「なになに」
ワイ「ふむふむ」
ワイ「え・・・」
ワイ「Elmではそもそも再代入する術がないんか」
x = 3
ワイ「再代入しようとしたらコンパイルエラー起きんねんて。」
ワイ「ほな普通に書いとくだけで、」
ワイ「なんかの処理の副作用で知らんうちに値を変えてもうとったわ!!!」
ワイ「って事がないんやな」
ワイ「あと配列・・・やなくてListか」
ワイ「リストに要素を追加しようとしてもそれは新しく別のリストが作られる感じになるから」
ワイ「元のリストはちゃんと残っとるんやな」
ワイ「JSのconstみたいな心配も大丈夫、いうわけやな」
ワイ「ほかにも」
ワイ「なんかをアレしたら、知らん間に他のなんかも変えてもうとった!!!」
ワイ「みたいな副作用が極力発生せんように言語自体が作られてんねんなー」
ワイ「しかも最終的にはJSにコンパイルされるんやって」
ワイ「間違って副作用を起こす事が少ない純粋関数型言語でフロントエンド開発ができんねんなー」
15時になったのでお勉強終了
ワイ「昨日は、変数の値が変わってしまわへんか心配になってお酒を飲んでしもうたけど」ワイ「今日はそんなことあらへん」
ワイ「今日は祝杯や」
ワイ「新しい言語との出会いにな」
オカン「結局飲むんやないか」
〜おしまい〜
コメント
コメントを投稿