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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidiOS SafariSamsung InternetNode.js
Basic supportChrome Full support 41Edge Full support YesFirefox Full support 34IE No support NoOpera No support NoSafari Full support 10WebView Android No support NoChrome Android Full support 41Edge Mobile Full support YesFirefox Android Full support 34Opera Android No support NoSafari iOS Full support 10Samsung Internet Android Full support 4.0nodejs Full support 4.0.0

Legend

Full support  
Full support
No support  
No support

Guarda anche

Tag del documento e collaboratori

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