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

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

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

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

2回答

652閲覧

JS 論理演算子の挙動がわからない

shunta80

総合スコア96

JavaScript

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2023/03/14 09:28

実現したいこと

|| 論理和について

||で条件分岐した場合、左辺がtrueであればそのままtrueが返ってくる想定です。
しかし、右辺で三項演算子を使うと左辺がtrueでも三項演算子の処理が動いてしまう

発生している問題・エラーメッセージ

左辺がtrueの場合でも右辺の値が返ってくる

該当のソースコード

左辺がtrueでも右辺の値が返ってくる
console.log(judge(7777))で関数実行

const judge = (value:any) => { return typeof value === 'number' || value?'99999':'77777' }

左辺がtrueの場合、右辺の値は返ってこずtrueが返ってくる
console.log(judge(7777))で関数実行

const judge = (value:any) => { return typeof value === 'number' || '77777' }

試したこと

右辺で三項演算子を使わない場合だと左辺がtrueの場合そのままtrueが返ってきました
しかし、右辺で三項演算子を使うと左辺がtrueでも右辺の処理が動いてしまいます

なぜ三項演算子を使うと左辺がtrueでも右辺が動いてしまうのかわかりません

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

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

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

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

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

shunta80

2023/03/14 16:08

回答ありがとうございます! 納得できました!
guest

回答2

0

typeof value === 'number' || value?'99999':'77777'
とは
((typeof value === 'number') || value)?'99999':'77777'
ということ

javascript

1console.log(1||0?2:3); //2 23console.log((1||0)?2:3);//2 4であって 5console.log(1||(0?2:3));//1 6ではない

投稿2023/03/14 09:46

yambejp

総合スコア117678

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

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

0

ベストアンサー

typeof value === 'number' || value?'99999':'77777'は、
typeof (value === 'number' || value) ? '99999':'77777'と見なされます。
括弧を付けましょう。
typeof value === 'number' || ( value?'99999':'77777')

投稿2023/03/14 09:42

otn

総合スコア86295

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問