Il metodo statico String.raw() è una funzione di tag del modello template string, simile al prefisso r in Python o al prefisso @ in C# per i valori letterali stringa (tuttavia c'è una differenza: vedere le spiegazioni in questo numero ). È usato per ottenere la stringa di stringhe di template non formattata, cioè le sostituzioni (ad esempio ${foo}) vengono elaborate, ma gli escape (ad esempio \n ) non lo sono.

Sintassi

String.raw(callSite, ...substitutions)
String.raw`templateString`

Parametri

callSite
Oggetto del sito di chiamata template ben formato, come { raw: ['foo', 'bar', 'baz'] }.
...substitutions
Contiene valori di sostituzione.
templateString
A template string, puoi sostituirlo opzionalmente (${...}).

Valore resituto

Restituisce una stringa non elaborata di un determinato Template String.

Eccezioni

TypeError
Un oggetto TypeError viene generato se il primo argomento non è un oggetto formato.

Descrizione

Nella maggior parte dei casi, String.raw() viene utilizzato con template strings. La prima sintassi menzionata sopra è usata solo di rado, perché il motore JavaScript la chiamerà con argomenti appropriati, proprio come con altre funzioni tag .

String.raw() è l'unica funzione di built-in tag incorporata nei template strings; funziona proprio come la funzione predefinita del modello ed esegue la concatenazione. Puoi anche ri-implementarlo con il normale codice JavaScript.

Esempi

Utilizzo di String.raw()

String.raw`Ciao\n${2+3}!`;
// 'Ciao\n5!', Il carattere dopo 'Ciao' non è un carattere di nuova riga,
// '\' e 'n' sono due caratteri.

String.raw`Hi\u000A!`;
// 'Ciao\u000A!', Lo stesso qui, questa volta avremo il
// \, u, 0, 0, 0, A, 6 caratteri.
// Tutti i tipi di caratteri di escape saranno inefficaci
// e backslash saranno presenti nella stringa di output
// Puoi confermare questo controllando la proprietà .length
// della stringa.

let name = 'Bob';
String.raw`Ciao\n${name}!`;
// 'Ciao\nBob!', le sostituzioni vengono elaborate.

// Normalmente non si chiama String.raw() come una funzione,
// ma la si chiama per simulare `t${0}e${1}s${2}t` puoi fare: 
String.raw({ raw: 'test' }, 0, 1, 2); // 't0e1s2t'
// Nota che la stringa 'test', è un oggetto simile ad un array
// Il seguente è equivalente a
// `foo${2 + 3}bar${'Java' + 'Script'}baz`
String.raw({
  raw: ['foo', 'bar', 'baz'] 
}, 2 + 3, 'Java' + 'Script'); // 'foo5barJavaScriptbaz'

Specificazioni

Specificazioni Stato Commento
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'String.raw' in that specification.
Standard Definizione iniziale.
ECMAScript Latest Draft (ECMA-262)
The definition of 'String.raw' in that specification.
Draft  

Compatibilità con il browser

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support41 Yes34 No No10
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support No41 Yes34 No104.0

Guarda anche

Tag del documento e collaboratori

Hanno collaborato alla realizzazione di questa pagina: ladysilvia
Ultima modifica di: ladysilvia,