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

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

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

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

JavaScript

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

3回答

2735閲覧

即時関数の前のビックリマーク

yaranaika12345

総合スコア11

Next.js

Next.jsは、Reactを用いたサーバサイドレンダリングなどを行う軽量なフレームワークです。Zeit社が開発しており、nextコマンドでプロジェクトを作成することにより、開発環境整備が整った環境が即時に作成できます。

JavaScript

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

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/10/04 00:32

とある人のソースを眺めていると、以下のような即時関数の前にビックリマークを書いている部分を見つけたのですが、これはどういう意味なのでしょうか?

イメージ説明

コードは以下にあります。
https://github.com/y-hiraoka/stin-blog/blob/main/scripts/createBlogArticle.js

よろしくおねがいいたします????

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

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

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

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

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

guest

回答3

0

ベストアンサー

その人の記述の癖だと思います
恐らくと下記のように書くのが一般的だと思いますけど

(function(){console.log(1)})();

下記のような書き方も可能です(※これを勧めるような内容のサイトを見た事もあります)

!function(){console.log(1)}(); //とか +function(){console.log(1)}(); //以下でも。無駄だけど !!!!!!!!!function(){console.log(1)}();

単にこれらがごっちゃになっていて、とりあえず動くからいいやって感じで混ざって書いちゃってるだけだと思います

投稿2021/10/04 01:10

hentaiman

総合スコア6426

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

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

0

おそらくなのですが、レガシーな即時関数の実行のくせを引きずっているだけでは?

javascript

1function(){console.log(1)}();

だとエラーになりますが

javascript

1!function(){console.log(2)}();

だと、式として評価されて実行されます
(!は+とか-とか式として評価できればなんでもいい)
アロー関数には使えないテクニックです=昔の癖がでたってことかなと

投稿2021/10/04 01:09

編集2021/10/04 01:10
yambejp

総合スコア115012

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

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

0

単項演算子を先頭に入れることで、別なコードと連続した時に続くカッコが関数呼び出しとして誤解釈されるのを阻止しています。

javascript

1 2// この様になっていると、foo()という呼び出しと解釈される 3 4var x = foo 5 6(function(){ /* 中身略 */ }()) 7 8// !は単項演算子しかないので、上のような誤解釈は起きない 9 10var x = foo 11 12!(function(){ /* 中身略 */ }())

投稿2021/10/04 00:48

maisumakun

総合スコア145208

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

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

Zuishin

2021/10/04 01:13

この質問に関しては、セミコロンがついているためにこの説明では通りません。 しかし、元々セミコロン対策でこのような書き方をしているコードを見た人が、意味も分からず真似ている可能性は高いと思います。 他に何か有効な理由があるようには見えませんから、「意味もわからず書いている」「そのオリジナルの元々の理由はこの回答と同じ」という意見として低評価にカウンター高評価します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問