Il mondo degli sviluppatori JavaScript è sicuramente il più colorito: non si smette mai di imparare e troviamo sempre novità, anche se a volte bisogna bisogna riuscire a distinguere una cosa interessante da una utile. Questo è il caso della keyword with, usata per creare un contesto in cui il runtime cerca di risolvere le variabili utilizzando prima l'argomento fornito all'interno del contersto. Vediamo un pratico esempio.
with (console) { log('Hello world!'); }
Sebbene questa funzionalità possa sembrare utile grazie alla sua capacità di isolare contesti di esecuzione del codice, va anche considerato che le performance del codice all'interno del contesto saranno sicuramente peggiori del solito, in quanto, per ogni operazione, dovrà verificare che non questa esista all'interno di console. L'utilizzo di with può inoltre portare a problemi di shadowing, nascondendo alcune variabili, o addirittura di sicurezza, come nello snippet seguente.
function getPow(num, exp) { with (Math) { return pow(num, exp); } } getPow(2, 5); //NaN
Il codice restituirà NaN, e per un semplice motivo: abbiamo definito un parametro in ingresso chiamato exp, ma nell'utilizzo di with abbiamo anche creato un contesto in cui JavaScript proverà a risolvere tutto verso Math. Quest aclasse contiene la funzione Math.exp e il codice che verrà eseguito è Math.pow(num, Math.exp()).
Oltretutto se in precedenza è stato definito un delegate custom per il metodo Math.num, verrà eseguita la funzione e non utilizzato il parametro, un grosso rischio per la sicurezza del nostro codice, tanto che anche la docuentazione (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/with) avverte a riguardo e ne sconsiglia l'utilizzo.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare velocemente microservice grazie a minimal API di ASP.NET Core 6
Generare le release note automaticamente tramite una GitHub Action
Utilizzare la libreria EntityFrameworkCore.Exceptions per gestire le eccezioni di Entity Framework Core in modo tipizzato
Gestire errori temporanei in una comunicazione gRPC con ASP.NET Core 6
Eseguire uno scroll all'interno di una pagina Blazor
Eseguire query in parallelo con Entity Framework Core and ASP.NET Core
Utilizzare il browser per rilevare Javascript e CSS non utilizzati nel codice
Utilizzare il metodo reduce in JavaScript
Accedere alla console di una Azure Container App
Produttività con ASP.NET Core 6
Gestire dati sensibili nella configurazione in ASP.NET Core
Utilizzare l'API del browser fetch
I più letti di oggi
- Abilitare automaticamente Dependabot in tutti i repository di una organizzazione su GitHub
- Migliorare la scalabilità di ASP.NET Core 7 grazie all'output cache
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2022 - Milano e Online
- Ottenere il riferimento alla finestra che ha aperto un'altra finestra con HTML5 e JavaScript