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

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

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

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

Q&A

解決済

6回答

1681閲覧

Javascriptにおいて、以下の記述に意味がわかりませんでした

ryuuichi2014

総合スコア115

JavaScript

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

0グッド

1クリップ

投稿2020/02/04 02:55

Javascript

1var t = !!usr;

この場合、tに入るのは true だったのですが、このびっくりマークが2つ繋がる書き方はどういう意味でしょうか?(usrがnullじゃなかったらtrueとかそういうことなのかな?)

Javascript

1var t={ user:user }

↑の場合だと、どういう意味になりますか?

あと、最後に こういう通常の文章ではないコードの書き方は なんという書き方で調べると出てきますか?? ググり方がわからないので 困っています。

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

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

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

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

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

m.ts10806

2020/02/04 02:57

ひとつめとふたつめは全く違う要件です。わけられては。 「通常の文章」がなにを想定されてるかわかりませんが、記号名でそのまま検索すれば大抵はそれなりの情報が出ます。
ryuuichi2014

2020/02/24 07:57

回答ありがとうございます、次回以降気をつけます、すいませんでした。
m.ts10806

2020/02/24 10:31

質問は編集できるので都度ご対応いただけたらと
guest

回答6

0

ビックリマークは論理 NOTです。論理 NOTは演算対象がtrueと見ることができる場合はfalseを返し、そうでない場合はtrueを返します。↓みたいな感じです

  • !truefalse
  • !falsetrue
  • !"Cat"true

これをもう一度やっているのが!!usrです。

"Cat"が「trueとみなせるかfalseとみなせるか」を調べたい際に、ビックリマークひとつだけだと「!"Cat"がfalseだからtrue」みたいにややこしく考えないといけません。これをもう一度やると「!!"Cat"がtrueだからtrue」と単純に考えられます。


var t={ user:user }userキーの内容に変数userが対応している状態です


論理NOTは「ビックリマーク true」で調べたらでてきました

もうひとつは「中括弧 javascript 使い方」で調べました

投稿2020/02/04 03:08

abababaa

総合スコア43

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

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

ryuuichi2014

2020/02/24 07:59

ありがとうございます、大変参考になりました。 的確な質問をしたいのですが、なかなか言葉が出てこないのです、ありがとうございます
guest

0

前者に対する回答です。

一旦否定演算子(!)でaaaを逆の真偽値としてboolean型に変換し、もう一度(!)を使って元の真偽値(boolean型)に戻します。

これによって、未定義の変数もif文の条件式の中でboolean型になるため、正しく判定ができます。

引用元

投稿2020/02/04 03:03

kyoya0819

総合スコア10429

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

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

ryuuichi2014

2020/02/24 08:01

ありがとうございます、助かりました
guest

0

var t = !!usr;

!論理否定演算子という正式名称を持つ演算子です。

JavaScriptはtrueや1"hoge"といったtrueっぽい値falseに変換、
逆にfalseや0""といったfalseっぽい値trueに変換します。

これを2連続で使って1"hoge"から、trueに変換するイディオムです。
Boolean(usr)という風に正規の手順で型変換を行った方が読みやすいかもしれません。
しかし!!はたった2文字で済む為、プログラマでは有名なキャストで愛用者も非常に多いです。


var t={ user:user }

JavaScriptのオブジェクトの書き方です。
コロン:で繋いだ左がキー名、右が値となります。

{}は関数宣言やブロックを作る時もあり、少々ややこしいのですが、
正真正銘、通常の文章なので覚えて置く必要があります。がんばって

投稿2020/02/04 03:06

編集2020/02/04 03:14
miyabi-sun

総合スコア21203

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

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

ryuuichi2014

2020/02/24 08:00

Boolean(usr) で理解できました! ありがとうございました。
guest

0

var t = !!usr;

usrの値によってtrue/falseを返したいだけでしょう。
条件文ないではif(usr)と変わりませんが厳密にブーリアンと
付け合わせたいときには有効です

投稿2020/02/04 03:02

yambejp

総合スコア116734

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

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

yambejp

2020/02/04 03:04

> var t={ user:user } 単純にtにオブジェクトを投入してるだけ userというプロパティに、user変数を与えています 今風に書けば var t={user} でいけます。
ryuuichi2014

2020/02/04 03:13

なるほど!わかりました!!
ryuuichi2014

2020/02/04 03:14

内容が nullなら真とかそういうことですか?
yambejp

2020/02/04 03:37 編集

var t=false; console.log([t,t?1:2,!!t?1:2]); var t=undefined; console.log([t,t?1:2,!!t?1:2]); var t=null; console.log([t,t?1:2,!!t?1:2]); var t=0; console.log([t,t?1:2,!!t?1:2]); var t=""; console.log([t,t?1:2,!!t?1:2]); var t=100; console.log([t,t?1:2,!!t?1:2]); var t=new Number(0); console.log([t,t?1:2,!!t?1:2]); /*こういうのがやっかい*/
ryuuichi2014

2020/02/24 08:01

ありがとうございます、これって 後で読むときわかるもんなんですかね(泣)
guest

0

前半。
!の意味が分からない場合:
まだ他人のプログラムを読むレベルに達していないということです。

!の意味が分かるが!!の意味が分からない場合:
2つつながることで別の意味が生じるのかということは無いです。そういうのは、== <= >= とかくらいですが、そういう別の意味かどうかは、「JavaScript 演算子一覧」とかでググればわかります。
といいうことで、単なる!の連続なので、よく考えればわかるはずです。

こういう通常の文章ではないコードの書き方は なんという書き方で調べると出てきますか??

ググるキーワードとしては、「JavaScript 基本構文」「JavaScript 文法」「JavaScript 入門」とかでしょうか。

投稿2020/02/04 07:12

otn

総合スコア85901

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

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

ryuuichi2014

2020/02/24 07:59

ありがとうございます、指定されたワードで調べてみたのですが 見つけることができませんでした。ありがとうございました。
guest

0

ベストアンサー

回答は既に出ていますが、後半について。

オブジェクトリテラル といいます。
リテラル」は他にもありますし、文法の基礎になりますので、この機に学習しておきましょう。

投稿2020/02/04 11:10

AkitoshiManabe

総合スコア5434

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

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

ryuuichi2014

2020/02/24 08:02

オブジェクトリテラル! ありがとうございます、今後はこれを糸口にさがせそうです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問