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

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

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

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

意見交換

クローズ

JavaScriptの等号演算子と文字列について

dameo
dameo

総合スコア787

JavaScript

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

6回答

0グッド

4クリップ

659閲覧

投稿2023/03/19 15:04

編集2023/03/19 20:54

TypeScriptも5が出ましたが、最近以前ほど元気ないように見えるJavaScript応援用のお題を考えてみました。

JavaScript

1> 's' === String(new String('s')) 2true 3> 's' === new String(new String('s')) 4false 5> 's' == String(new String('s')) 6true 7> 's' == new String(new String('s')) 8true 9> 0 == String(new String('')) 10true 11> 0 === String(new String('')) 12false 13>

お題その1:

こんな結果になる文字列と比較演算子の挙動を説明してください。

お題その2:

あなたが望ましいと思う変数sと's'の等号比較を記述してください。

お題その3:

Stringと同じような挙動をするFuncを記述してください
※Funcの前にnewがある場合Funcオブジェクトが返り、それ以外はStringと同じ


※最初の全問正解にはGood評価
※私の勘違いや間違いを指摘した人もGood評価
※ウンチクが面白かった人もGood評価
※私が考えた問題なので私の用意した答えもあります。やりたくなければご自由に。
※ご意見もご自由にお書きください

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

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

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

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答6

#1

yambejp

総合スコア110910

投稿2023/03/20 03:19

プリミティブではなくオブジェクトの合致をどのレベルでするかは定義次第です。
StringオブジェクトのほかにNumberやBooleanオブジェクトも同様です。
中身だけ一緒であれば合致とするならvalueOf()やtoString()したものを比較すればよいでしょう

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

#2

dameo

総合スコア787

投稿2023/03/20 03:47

オブジェクト同士の比較は入れてないと思いますけど…
あまり書くと回答したい人へのヒントになってしまうので、私はこれ以上書くのはやめときます
他の人はご自由にどうぞ

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

#3

yambejp

総合スコア110910

投稿2023/03/20 03:51

「オブジェクト同士の比較」と「オブジェクトの合致」は似て非なる話なんですが・・
あえてミスリードしているのであれば面倒なのでもう回答しません

miyabi_pudding👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

#4

dameo

総合スコア787

投稿2023/03/20 03:57

ミスリードも難しい話もしていません
単に必ず片方はプリミティブなので、オブジェクトが合致することはなく、定義次第な部分はないと言ってるだけですよ
回答は自由なので、続けるか否かもご自由に

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

#5

maisumakun

総合スコア143000

投稿2023/03/21 04:58

お題その3:

js

1const Func = String; 2 3console.log(new Func('hoge') instanceof Func) // true
dameo👍を押しています

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

#6

dameo

総合スコア787

投稿2023/03/21 06:34

編集2023/03/21 06:41

その回答は想定外でしたね。要件は満たしているのでお題その3は正解です。

new指定された場合はStringオブジェクトとしての挙動は必要ない意図でした。ちなみに

JavaScript

1const Func = String; 2console.log(new Func('hoge') instanceof String) // true 3console.log(new String() instanceof Func) // true

でした。これもビックリ。

※私の勘違いや間違いを指摘した人もGood評価
※ウンチクが面白かった人もGood評価

これらに該当するので、Goodです!
私の回答は

JavaScript

1function Func(...args) {return String(...args);} 2> Func(new String('s')) 3's' 4> Func(new String()) 5'' 6> Func(new String(null)) 7'null' 8> Func(new String(undefined)) 9'undefined' 10> typeof new Func() 11'object' 12> new Func() instanceof Func 13true 14> String(new String()) 15'' 16> String(new String('s')) 17's' 18> String(new String(null)) 19'null' 20> String(new String(undefined)) 21'undefined' 22> typeof new String() 23'object' 24> new String() instanceof String 25true 26>

でした。ちなみにthisによるnew付けてるか判定をすると、無駄なString()呼び出しを減らせます。

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

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