独学でやってるとC言語的な書き方で済ませちゃうから新しい記述方とか全然知らないものが出てきて・・・ 今回ウェブアーカイブのhtmlコードを閲覧していたらギョッとしてしまったのでまとめる。 (コード難読化ツールというのも使っているようだが)
オプショナルチェーン(もしくはオプショナルチェイニング)とは、 左辺がnullだったり右辺が存在しない場合にエラー停止するのではなくundefinedを返す。 stanch環境ではテストできない。 詳しくはMozillaのMDNにて。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Optional_chaining
メソッドへのアクセスでも使用可能。
この形式(なんて言うんだっけコレ・・・)でも使用可能。
左辺がnullかundefinedの場合に右のものを返す。 0や空文字の場合は左辺が適用される。 また、右辺が実行されるのは、左辺がnullやundefinedの場合のみ。 stanch環境ではテストできない。 詳しくはMozillaのMDNにて。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing こういう新しい記述をされると少し古くなっただけのブラウザやスマホで見れないサイトが出てくるんだよな・・・ おそらく2019年か2020年以前のスマホやブラウザだと実行できない。 それによって、YoutubeなどのJavaScriptバリバリのサイトなども動かなくなったりする。 JavaScriptがこんなに癌のような存在になるなんて・・・
対象をブール値に変換する。 IE6でも実行可能なほど古くから存在する記述法だった。
メンバが存在するかどうか調べる。 この例だとlocationのメンバとしてhrefがあればtrueを、無ければfalseを返す。 IE6でも実行可能なほど古くから存在する記述法だった。
undefinedと同じ (ただし極めて特殊な状況下では違う動作をする場合もあるらしい) IE6でも実行可能なほど古くから存在する記述法だった。
ある程度知ってはいたんだが・・・なんか記述がキモくて使ってなかった。 だが他人のコードをいじる時には便利だなぁ。 なお、普通に使用する場合におけるメリットは、スコープを狭めて汚染を防ぐというのが主な理由らしい。
・・・と思ったがFirefoxだと2つめのfnc()実行時に fnc is not define とエラーを吐かれてしまった。 環境によって動作が変わる可能性が高いのでこの記述はやめたほうが良さそう。
カンマでつなげると全て実行して最も右側の値を返す。
カッコが無いとhttp://〜〜〜が返されてしまう(右側のは実行されずに終わる?)
だが、これだとtrueが表示される。 む、難しいな・・・
IE6では実行できないが、IE6以外ならstanch環境でも実行可能。 これ以外にも初期値を設定したり、配列のデクストラクチャリングなどもあって大変なので以下のサイトで。 JavaScript 分割代入(デストラクチャリング) #JavaScript - Qiita https://qiita.com/akifo/items/19a4f2823fc99779dffc MozillaのMDNもある。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Destructuring
無名関数の記述を変えたもの。 引数の左のfunctionという記述が無くなり、引数の右にアローが増えた。 IE6は対応しておらずエラーとなる。 詳しくはMozillaのMDNにて。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions メリットが分からなかったんだけど、無名関数とは明確に動作が異なる場面もあり、そこにメリットがある。 アロー関数内では状況によって関数内でのthisの扱いが変わるみたいだ。 アロー関数が便利な理由と使いどころ #JavaScript - Qiita https://qiita.com/10mi8o/items/2da84ab650f4caffdeea
IE6ですら使用可能という古くから存在する手法。 こんな風に引数を渡すことも出来たのか〜 明示的に変数を書くよりこっちのがいいか? でも後から見ることを考えると明示的に書いたほうが分かりやすいか。
一行にしたら見やすそう。
下に行くほど新しいコメントです