Il metodo plus (+) e String.concat()
fornisce lo stesso risultato.Qual è la differenza tra il metodo + operator e concat() in JavaScript
plus (+) operatore; Metodo
str1 + str2;
String concat();
str1.concat(str2);
Addionally, è scritto in w3schools;
Ma con JavaScript, metodi e proprietà sono disponibili per valori primitivi anche, perché JavaScript considera valori primitivi come oggetti durante l'esecuzione di metodi e proprietà.
Quindi, quale modo è meglio utilizzare per combinare sia per le primitive che per gli oggetti String in JS, quali sono i vantaggi e gli svantaggi delle prestazioni tra di essi se ce n'è?
var firstName = "John" // String
var y = new String("John"); // with String Object
Ecco i codici di esempio che danno gli stessi risultati;
function example1() {
var str1 = "Hello ";
var str2 = "World!";
document.getElementById("demo1").innerHTML += str1 + str2;
}
function example2() {
var str1 = "Hello ";
var str2 = "World!";
document.getElementById("demo2").innerHTML += str1.concat(str2);
}
function example3() {
var str1 = String("Hello ");
var str2 = String("World!");
document.getElementById("demo3").innerHTML += str1 + str2;
}
function example4() {
var str1 = String("Hello ");
var str2 = String("World!");
document.getElementById("demo4").innerHTML += str1.concat(str2);
}
example1();
example2();
example3();
example4();
<p id="demo1">Demo 1: </p>
<p id="demo2">Demo 2: </p>
<p id="demo3">Demo 3: </p>
<p id="demo4">Demo 4: </p>
Questa domanda riguarda javascript, non java! in secondo luogo, non si tratta solo di operatore vs. concat(), ma anche del comportamento relativo alle primitive e agli oggetti in javascript. La domanda di riferimento non è il duplicato di questo. Dovrebbe essere riaperto! –
Vedere ES5 [** §15.5.4.6 ** concat] (http://es5.github.io/#x15.5.4.6) e confrontare con [** §11.6.1 ** addetto aggiuntivo] (http: //es5.github.io/#x11.6.1); La differenza principale è che puoi chiamare '.concat' su _non-Strings_ e assumere che il risultato sia un _String_' String.prototype.concat.call (1, 2); // "12" 'vs' 1 + 2; // 3' –
@PeeHaa Oops, mi dispiace per quello. –