En JavaScript, desde mi entendimiento, el siguiente son todos iguales:JavaScript cadena de inicialización
es el más preferidovar carter2 = new String();
var carter2 = '';
var carter2 = "";
¿Cuál?
En JavaScript, desde mi entendimiento, el siguiente son todos iguales:JavaScript cadena de inicialización
es el más preferidovar carter2 = new String();
var carter2 = '';
var carter2 = "";
¿Cuál?
No utilice
var str = new String();
Debido
var str = new String("dog");
var str2 = new String("dog");
str == str2; // false
Pero
var str = "dog";
var str2 = "dog";
str == str2; // true
Sin embargo, debido a la conversión de tipos, las siguientes obras (Gracias a Rocket por señalarlo)
var str = new String("dog");
var str2 = "dog";
str == str2; // true
Las comillas simples y dobles no importan, excepto por las comillas que se deben evitar.
Muchos otros han notado que las comillas simples son mejores cuando se crean cadenas HTML, ya que XHTML espera que los atributos tengan comillas dobles, y no tendrá que escapar de ellas.
Definitivamente sin la llamada a la función de constructor.
Por lo tanto, con comillas simples o dobles (es decir, literal).
Nota, este tipo de optimización (literal vs. constructor) Creo que solo importaría si tuviera cientos o miles de estas afirmaciones.
No estoy seguro de lo que quiere decir con "esto solo importaría si tuviera [muchas] afirmaciones" - no hay absolutamente ninguna diferencia entre ''' y '" ', pero hay una [gran diferencia] (http: //stackoverflow.com/a/9946840/201952) entre primitivos y objetos 'String' – josh3736
uhh ... eso es a lo que me refería. Estoy claramente a favor del literal vs. constructor (¿no leíste mi respuesta?) no argumentando solo vs. doble. Creo que solo leyó mal, y definitivamente no vale dos votos a favor. – thescientist
El problema es que hay una consideración mucho más grande que el rendimiento: los literales le dan una primitiva de cadena, mientras que el constructor le da una 'String' ** object **. Vea las otras respuestas para las implicaciones de esa diferencia. – josh3736
Mientras ''
y ""
son el mismo (son primitivas), new String()
es no porque devuelve un objetoString
.
typeof '' == 'string'
typeof "" == 'string'
typeof new String() == 'object'
Ver Distinction between string primitives and String
objects.
Yo prefiero usar var carter2 = '';
porque:
Prefiero usar comillas simples en java-script, comillas dobles para atributos html.
UPD: esta es mi preferencia, sé que las comillas simples son intercambiables.
Puede usar comillas simples en atributos HTML, 'Google'. –
Sé que puedo. Estaba hablando de mis preferencias. –
Ah bien. Pensé que lo señalaría. –
Al hacer new String()
, no se le devuelve una primitiva string
, sino un objeto String
.
Para todos los efectos, actúa como una primitiva string
, pero hay casos en que no lo hará. Por ejemplo:
var a = new String('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
También cuando se comparan cosas, puede haber un problema.Cuando compara objetos en JavaScript, es solo true
si son el mismo objeto exacto , no solo el mismo valor. Ejemplo:
var a = new String('test');
var b = new String('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
Puede utilizar .valueOf()
para convertir un objeto a un String
string
primitiva.
new String('test').valueOf() === 'test'; // true
Por lo tanto, altamente sugieren el uso de var a = ''
o var a = ""
. En cuanto a las comillas simples frente a las comillas dobles, no hay diferencia. Considere este ejemplo:
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 "
Por lo tanto, depende de usted si desea utilizar o '
"
, pero sugiero los mayores de new String()
.
Solo una nota: 'new String ('dog') == 'dog'' es verdadero, pero' new String (' dog ') ===' dog'' es falso. Tenga en cuenta el '==' contra '==='. –
Otra nota: (X) Los atributos de HTML se pueden citar en comillas simples o dobles. –