質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1888閲覧

const自体の名前を変更できないのか

moimoi_sushi

総合スコア26

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2021/02/19 08:19

編集2021/02/19 08:20

コーディングしていてアロー関数を多用していると変数を宣言したconstと混ざっていてざっと見する際にfunctionよりかえって読みづらいなと感じることがあります。

なのでconstにアロー関数用の名前をつけて宣伝してみたいです。
例えば、アロー関数としてconstを宣言する代わりに同じ意味でfunstという名前で宣言できるとか、そのようなイメージになります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/02/19 08:24

ちょっと意味がわかりません。 constで関数宣言しても読みづらいとも思わないですが、 どのような意図なのかご説明いただけませんか?
maisumakun

2021/02/19 09:04

「どのようなコード」を「どういうふうに書きたい」のか、例を書いていただけませんでしょうか?
m.ts10806

2021/02/19 10:12

>宣伝してみたいです。 constを宣伝 というのが気になって内容が頭に入ってきませんね。 全く意味が違ってきて伝わるものも伝わらなくなるので 誤字脱字には気を付けてください(案外コードに影響します)
miyabi_takatsuk

2021/02/19 11:06

既に回答ございますが、 constに置き換わる、宣言子自体(予約語)を自身のオリジナルのものを定義したい、ということでしょうか?
think49

2021/02/19 12:40

同じく「読みづらい」の状況がわかりませんので、コード説明を求めます。 もし、functionで可読性に問題がないと感じるのなら、functionで書けば良いかもしれません。 アロー関数でなければ実装不可能な事は今のところありませんので。
moimoi_sushi

2021/02/20 02:49

>constに置き換わる、宣言子自体(予約語)を自身のオリジナルのものを定義したい、ということでしょうか? その通りです。 >同じく「読みづらい」の状況がわかりませんので、コード説明を求めます。 classやディレクトリで処理を分割しているのですがそれでも一つのファイルが千行近く超えてくると煩わしくなります。 ゆっくり読めば可読性の問題は感じないのですがざっと読みする場合に、constだらけ(アロー関数、mapやfindなどのメソッド、変数、他使われている)だと視覚的にすぐにここが関数だなとかが分かりにくいと感じています。 特にTSを使って書いていると改行なども多くなり読みにくいなと感じています。整理すれば読みやすくできると思いますがガーっと書いてからリファクタリングするのですがそれまでは読みにくいです。 アロー関数はfunctionと異なり上から下へ順番に読み込んでくれることもあり今後も可能な限りアロー関数は使っていきたいです。
moimoi_sushi

2021/02/20 02:51

仮に予約語がfunstとして置き換えることができれば、エディターの検索機能を使いながらアロー関数を素早く見つけることができて便利だと思います。
hentaiman

2021/02/20 06:46

1ファイルが1000行とか設計が下手なだけだと思いますが、1000行あったとしても読み易いコードは多いと思うので質問者の場合はもっと別の根本的な原因があると思います 有名なライブラリのソースなどを参考にjavascriptの書き方から見直してみてはどうでしょうか?
Zuishin

2021/02/20 06:54

funst が使えるということは、自分でコーディング規約を決めることができるということですよね? 関数かどうかを見分けるのがそこまで重要であるのなら、関数にはすぐそれとわかる命名をしてはどうでしょうか? https://ja.m.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%AC%E3%83%AA%E3%82%A2%E3%83%B3%E8%A8%98%E6%B3%95 あと一行で書かず、関数は必ず複数行にするようにすれば、インデントでだいたいわかると思います。 関数名無関係に検索でアロー関数を見つけたいという状況も私の理解の外にありますが、正規表現もしくは => を検索するだけでも見つけられると思うので、検索履歴を使うなりエディタのマクロや拡張機能を組むなりでも対応できそうな気がします。
moimoi_sushi

2021/02/20 09:46 編集

>funst が使えるということは、自分でコーディング規約を決めることができるということですよね? どちらかといえばエイリアス的に名前を変えて使うイメージでした。 インデントや書き方などもairbnbなどのESlintを使ったりPrettierを使って修正は
Zuishin

2021/02/20 09:45

それはできないので代替案です。目立って検索できればいいのであれば。
guest

回答2

0

ベストアンサー

なのでconstにアロー関数用の名前をつけて宣伝してみたいです。

下手な説明をするより、こう書いてみたいですって仮想のコードを書いてくれた方がまだ共感できそうですが…
多分こういう事でしょう。

JavaScript

1const hoge1 = 'hogehoge'; 2funst fuga1 = () => { 3 return 'fugafuga'; 4}; 5const hoge2 = 'hogehoge'; 6const hoge3 = 'hogehoge'; 7funst fuga2 = () => { 8 return 'fugafuga'; 9}; 10const hoge4 = 'hogehoge';

で、これは現状では不可です。

予約語としてconstがある以上これはひっくり返せませんし、Cとかのように無理やりマクロで置き換えて蓋をする事もできませんし、constで宣言した変数に直接代入する発想から離れない限り抱えている問題点を解消することは難しいでしょう。

ブラウザやNode.jsなんかはECMAScriptに準拠したJavaScriptで動くという仕様なので、割と八方塞がりです。

MDN Web Docs JavaScript 技術概説 - https://developer.mozilla.org/ja/docs/Web/JavaScript/JavaScript_technologies_overview

可能性だけで言うなら、moimoi_sushiさん自身が仕様策定機関(W3C等)に入り込み、自ら必要性を訴え次期ECMAScriptの仕様として妥当と判断されて言語仕様に入れる事が出来れば可能でしょう。

別のアプローチであればMicrosoftがTypeScriptを作ったように、別言語からJavaScriptに変換するコンパイラと対応するオリジナル言語をmoimoi_sushiさんが作り上げればこれもまた可能かと思います。
今でこそRoRだなんだで大掛かりなフレームワークもあって尻込みしそうなRubyですが、元はまつもとひろゆき氏が一人で作ったって話です。
ノリと勢いだけはすごいプログラミング言語:KQなんてのもありますし。

「ダァシエリイェス!!」でコードを書く「プログラミング言語KQ」登場 ねとらぼ - https://nlab.itmedia.co.jp/nl/articles/1110/18/news042.html

ここまで書きましたが、「そんな大層な事できるわけねーだろ」とか思われそうなので個人的にconstはこう書いたらどうでしょうというアドバイス。
定数用constは無名クラスのgetterにしてしまい、定数として使うのは1つだけにするルールを自分に課すと良いかもしれません。
JavaScriptのこういう使い方は多すぎて挙げるとキリがないので気に入った方法を一つ自分で見つけるか編み出せばよいと思います。

動作サンプル - https://jsfiddle.net/L5p7sd82/

JavaScript

1const config = new class { 2 get hoge1() { 3 return 'hogehoge1'; 4 } 5 get hoge2() { 6 return 'hogehoge2'; 7 } 8}; 9 10console.log(config.hoge1); // 'hogehoge1'と出力 11console.log(config.hoge2); // 'hogehoge2'と出力 12 13config.hoge1 = "fugafuga"; 14console.log(config.hoge1); // 'hogehoge1'と出力。書き換わらない 15 16// constなので再代入できず、これは代入不可のエラーが出る 17// config = new class { 18// get hoge1() { 19// return 'fugafuga'; 20// } 21// }; 22// console.log(config.hoge1);

長文失礼しました。

投稿2021/02/19 09:26

編集2021/02/19 11:23
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/02/19 12:01

「質問の回答」で終わらせるのが勿体ない内容。
moimoi_sushi

2021/02/20 03:05

例のコードの通りの形でfunstを使いたいです。 getterを使った方法良いですね。検討してみます。ありがとうございます。
guest

0

既に正答が出ておりますが、
不可能となります。

では、どうすれば実装できるか、既出のご回答とは別の角度から回答してみようと思います。

オリジナルのスーパーセット言語ないしフレームワークの開発

既出の回答にもありますが、
TypeScriptは、JavaScriptのスーパーセット言語ですが、それと同様にfunstなどを使用でき、それをJSにコンパイルできる言語を新たに開発することです。
また、PHPにおいての、Smartyなどのように、言語自体は変わらないが、扱いやすく、短い構文で記載できる、フレームワークの開発をするか、です。

オリジナルのIDEの開発

上記と似通っていますが、funstなどを使う事ができ、コンパイルをかけることで、constなどに置き換えるIDEを自作することです。

ただし、上記はいずれも、質問者さん独自の開発になるため、普及は当然していないので、情報は皆無ですし、最初はバグだらけになるでしょう。
よって、質問者さんしか使う事ができません。
果たして、質問者さんしか使えないもの本当によいものなのか、効率がいいのか?
は甚だ疑問と言えるでしょう。

投稿2021/02/20 06:38

編集2021/02/20 06:42
miyabi_takatsuk

総合スコア9528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2021/02/20 06:44

って、mahnyさんの回答に、スーパーセット言語の話出てましたね 汗 フレームワークとIDEの部分だけご参考下さい。
moimoi_sushi

2021/02/20 09:49

流石にそこまでは面倒なのと他の人が扱えないものとなるのでないですね^^; それであればアロー関数の変数名にお決まりの接頭辞や末尾にhogehogeFuncなどをつけたい感じです。 とりあえずエイリアス的にconstを変更できないということがわかっただけでためになりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問