7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

new String() と String() の違い

Last updated at Posted at 2016-08-09

PHPStormでJavaScriptのコードを書いていて

var name = new String("hoge");

みたいなコードを書いたら

Primitive type object wrapper used
Checks for improper usage of wrappers for JavaScript primitive types. Also, warning will be produced when property of primitive type is modified, as assigned value will be lost.

という警告が表示された。で、

var name = String("hoge");

と new を消したら警告も消えた。
new String() と String() で何が違うのかわからなかったので調べた。

#new String()
new String("hoge") は "hoge" という値を持ったStringクラスのオブジェクトを生成して返す。

#String()
String("hoge") はStringクラスのオブジェクトではなく、プリミティブデータ型の文字列の値を返す。

#プリミティブデータ型の文字列とオブジェクトの文字列

  • プリミティブデータ型の文字列に対してそのラッパークラスがある。
  • プリミティブデータ型の文字列は不変。例えば "hoge".substr(1, 2) は値を変更しているのではなく、元の文字列から新しい文字列を作っている。
  • プリミティブ型のStringに対してメソッドを呼ぶと、プリミティブ型のStringはラッパークラスのオブジェクトの自動的に変換される。
  • メソッドによっては文字の並びは同じでも型がプリミティブ型がラッパークラスかで結果が異なるものがある。eval()とか。
  • 文字列を作るとき、あえてStringクラスのオブジェクトを使う理由はなさそう。

#参考サイト
String - JavaScript | MDN
データ構造 - JavaScript | MDN

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?