var str =newString("dog");var str2 =newString("dog");
str == str2;//false
Mais
var str ="dog";var str2 ="dog";
str == str2;//true
Toutefois, en raison de contrainte de type, les ouvrages suivants (Grâce à la Fusée pour le pointage)
var str =newString("dog");var str2 ="dog";
str == str2;//true
Les guillemets simples et doubles n'ont pas d'importance, sauf pour ce que les citations doivent être échappés. de Nombreux autres ont noté que les guillemets simples sont mieux lors de la création de chaînes HTML, depuis XHTML attend attributs entre guillemets doubles, et vous n'aurez pas besoin de leur échapper.
Juste une remarque: new String('dog') == 'dog' est vrai, mais new String('dog') === 'dog' est faux. Remarque le == vs ===. Une autre remarque: (X)HTML, les attributs peuvent être cités dans des guillemets simples et doubles.
Lors new String(), vous n'êtes pas retourné un string primitive, mais une String objet.
Pour toutes fins utiles, il agit comme un string primitive, mais il y a des cas où il ne sera pas. Par exemple:
var a =newString('body');
jQuery(a);//This will *not* function as expected//This will make a jQuery object containing a "String" object//It will NOT treat it as a selector string
Aussi lorsque l'on compare les choses, il y a peut être un problème. Lorsque vous comparez des objets en JavaScript, il est seulement true si ils sont la même objet, pas seulement la même valeur. Exemple:
var a =newString('test');var b =newString('test');var c = a;var d ='test';
a === b;//false, a and b are different objects (a == b is also false)
c === a;//true, a is the same object as c
c === b;//false, c (which is a) is a different object than b
d === a;//false, d is a primitive and a is an object, they are not equal'test'=== d;//true, they are both string primitives
d == a;//true, this uses "==" so only value is compared, not type
Vous pouvez utiliser .valueOf() pour convertir un String objet d'un string primitive.
newString('test').valueOf()==='test';//true
Donc, je très vous suggérons d'utiliser var a = '' ou var a = "". Comme pour les guillemets simples contre des guillemets, il n'y a pas de différence. Considérons cet exemple:
var a ="My name is Joe O'Ryan";var b ='My name is Joe O\'Ryan';//need to escape the 'var c ='Joe said: "Hi"';var d ="Joe said \"HI\"";//need to escape the "
Donc, c'est à vous de décider de l'utilisation ' ou ", mais je suggère que les personnes de plus de new String().
Guillemets qui pourraient entrer en conflit avec les attributs de guillemets à l'intérieur de chaînes.
Donc je préfère utiliser les guillemets simples en java-script, les guillemets doubles pour les attributs html.
UPD: c'est ma préférence, je sais que seul les guillemets sont interchangeables.
Vous pouvez utiliser des guillemets simples dans les attributs HTML, <a href='http://google.com'>Google</a>. Je sais que je peux. Je parlais de mes préférences. Ah ok. Juste pensé que je voudrais signaler.
Certainement sans le constructeur de l'appel de fonction.
Donc, avec des guillemets simples et doubles (c'est à dire littérale).
Remarque, ce type d'optimisation (littérale vs constructeur), je crois, serait seulement question si vous aviez des centaines ou des milliers de ces déclarations.
Je ne suis pas sûr de ce que tu veux dire par "ce ne serait qu'importe si vous avez eu de nombreux états" -- il n'y a absolument aucune différence entre ' et ", mais il y a un la différence majeure entre les primitives et les String objets. heu... c'est ce que je faisait allusion. Je suis clairement en favorisant le littéral vs constructeur (n'avez-vous pas lu ma réponse?). ne plaide pas simple vs double. Je pense que vous avez juste mal lu, et certainement pas la peine de deux downvotes. Le problème est qu'il y a une considération beaucoup plus grand que celui de la performance: les littéraux de vous donner une primitive de chaîne, alors que le constructeur vous donne un Stringobjet. Voir les autres réponses pour les implications de cette différence. Vous faire remarquer que vous ne devriez pas utiliser la Chaîne de constructeur, mais vous offre pas de raisons valables (juste des suppositions sauvages).
Ne pas utiliser
Parce que
Mais
Toutefois, en raison de contrainte de type, les ouvrages suivants (Grâce à la Fusée pour le pointage)
Les guillemets simples et doubles n'ont pas d'importance, sauf pour ce que les citations doivent être échappés.
de Nombreux autres ont noté que les guillemets simples sont mieux lors de la création de chaînes HTML, depuis XHTML attend attributs entre guillemets doubles, et vous n'aurez pas besoin de leur échapper.new String('dog') == 'dog'
est vrai, maisnew String('dog') === 'dog'
est faux. Remarque le==
vs===
.Une autre remarque: (X)HTML, les attributs peuvent être cités dans des guillemets simples et doubles.
OriginalL'auteur Juan Mendes
Lors
new String()
, vous n'êtes pas retourné unstring
primitive, mais uneString
objet.Pour toutes fins utiles, il agit comme un
string
primitive, mais il y a des cas où il ne sera pas. Par exemple:Aussi lorsque l'on compare les choses, il y a peut être un problème. Lorsque vous comparez des objets en JavaScript, il est seulement
true
si ils sont la même objet, pas seulement la même valeur. Exemple:Vous pouvez utiliser
.valueOf()
pour convertir unString
objet d'unstring
primitive.Donc, je très vous suggérons d'utiliser
var a = ''
ouvar a = ""
. Comme pour les guillemets simples contre des guillemets, il n'y a pas de différence. Considérons cet exemple:Donc, c'est à vous de décider de l'utilisation
'
ou"
, mais je suggère que les personnes de plus denew String()
.OriginalL'auteur Rocket Hazmat
Tout
''
et""
sont les mêmes (elles sont primitives),new String()
est pas parce qu'elle renvoie unString
objet.Voir Distinction entre la chaîne de primitives et de
String
objets.OriginalL'auteur josh3736
Je préfère utiliser
var carter2 = '';
parce que:Donc je préfère utiliser les guillemets simples en java-script, les guillemets doubles pour les attributs html.
UPD: c'est ma préférence, je sais que seul les guillemets sont interchangeables.
<a href='http://google.com'>Google</a>
.Je sais que je peux. Je parlais de mes préférences.
Ah ok. Juste pensé que je voudrais signaler.
OriginalL'auteur Eugene Retunsky
Certainement sans le constructeur de l'appel de fonction.
Donc, avec des guillemets simples et doubles (c'est à dire littérale).
Remarque, ce type d'optimisation (littérale vs constructeur), je crois, serait seulement question si vous aviez des centaines ou des milliers de ces déclarations.
'
et"
, mais il y a un la différence majeure entre les primitives et lesString
objets.heu... c'est ce que je faisait allusion. Je suis clairement en favorisant le littéral vs constructeur (n'avez-vous pas lu ma réponse?). ne plaide pas simple vs double. Je pense que vous avez juste mal lu, et certainement pas la peine de deux downvotes.
Le problème est qu'il y a une considération beaucoup plus grand que celui de la performance: les littéraux de vous donner une primitive de chaîne, alors que le constructeur vous donne un
String
objet. Voir les autres réponses pour les implications de cette différence.Vous faire remarquer que vous ne devriez pas utiliser la Chaîne de constructeur, mais vous offre pas de raisons valables (juste des suppositions sauvages).
OriginalL'auteur thescientist