2016-07-19 340 views
10

considerare questo frammento di codice JavaScript:a.style.display: Valore assegnato al primitivo sarà perso

var a = document.createElement("a"); 
a.style.display = "none"; 

IntelliJ IDEA 2016.2 punti salienti a.style.display e dà questo suggerimento:

Valore assegnato al primitivo sarà perso

Verifica l'utilizzo improprio dei wrapper per i tipi primitivi JavaScript. Inoltre, gli avvisi sarà prodotta quando la proprietà di tipo primitivo viene modificato, come valore assegnato verrà perso

IntelliJ IDEA hint

CSSStyleDeclaration non è un tipo primitivo, così il compito di display non verrà persa.

String è un tipo di wrapper. Come sto usando (impropriamente)?

Il codice sembra funzionare correttamente in Chrome e Edge. Qual è l'accordo?

+0

http://stackoverflow.com/questions/37923424/valore-assegnato-al-primitivo-will-be-lost – Rayon

+0

Ho visto quella domanda ma non ho veramente capito i commenti. Inoltre, non ho un ciclo o anche una funzione qui. – xehpuk

+0

Sei all'interno di una funzione? – Rayon

risposta

0

Non c'è niente di inappropriato nel codice, l'inferenza di tipo di IntelliJ è un po 'confusa (questo aspetto di JavaScript è particolarmente confuso).

sua Linter vede una stringa e si assume provare qualcosa di simile:

var primitive = "september"; 
primitive.vowels = 3; 

primitive.vowels; 
// => undefined 

che porterebbe ad un valore 'perduta'.

Per comprendere ulteriormente questa strana parte di JavaScript, consiglio l'eccellente articolo approfondito di Angus Croll here.