JavaScript e perché le lettere maiuscole a volte funzionano e a volte non
-
01-07-2019 - |
Domanda
In Notepad++, stavo scrivendo un file JavaScript e qualcosa non ha funzionato:un avviso doveva essere mostrato quando un pulsante è stato cliccato, ma non funzionava.
Ho utilizzato la funzione di auto-completamento plug-in fornito con Notepad++, che mi ha presentato onClick
.
Quando ho cambiato la capitale C
per un piccolo c
, non lavoro.
Quindi, prima di tutto, quando guardando le funzioni di auto-completamento, ho notato un sacco di funzioni mediante capitali.
Ma quando si cambia getElementById
per getelementbyid
, si ottiene anche un errore, e a peggiorare le cose, il mio manuale da scuola si scrive le cose con le lettere maiuscole, ma le soluzioni sono tutte fatte in lettere minuscole.
Così che cosa è con JavaScript e la sua natura selettiva verso cui funzioni possono avere le lettere maiuscole in loro e che non si può?
Soluzione
Javascript è SEMPRE case-sensitive, html non è.
Sembra che si sta parlando di se gli attributi html (ad es.onclick) sono o non sono case-sensitive.La risposta è che gli attributi non sono case sensitive, ma il modo in cui si accede tramite il DOM è.Così, si può fare questo:
<div id='divYo' onClick="alert('yo!');">Say Yo</div> // Upper-case 'C'
o:
<div id='divYo' onclick="alert('yo!');">Say Yo</div> // Lower-case 'C'
ma attraverso il DOM è necessario utilizzare il carattere corretto.Quindi, questo funziona:
getElementById('divYo').onclick = function() { alert('yo!'); }; // Lower-case 'C'
ma non è possibile fare questo:
getElementById('divYo').onClick = function() { alert('yo!'); }; // Upper-case 'C'
EDIT:CMS rende un ottimo punto che la maggior parte DOM metodi e le proprietà sono in camelCase.L'unica eccezione che mi viene in mente sono il gestore di evento di proprietà e questi sono generalmente accettato di essere il modo sbagliato di allegare agli eventi comunque.Preferisco usare addEventListener
come in:
document.getElementById('divYo').addEventListener('click', modifyText, false);
Altri suggerimenti
Pochi oggetti è IE non sempre sono case-sensitive, tra cui alcune, la maggior parte/tutti i controlli ActiveX -- perché sia XHR.onReadyStateChange e XHR.onreadystatechange avrebbe funzionato bene in IE5 o IE6, ma solo l'ultimo lavoro con i nativi XMLHttpRequest oggetto in IE7, FF, etc.
Ma, un riferimento rapido per il "standard"API involucro:
- MAIUSCOLE - Costanti (generalmente simbolico, dal momento che const non supportate a livello globale)
- In maiuscolo - Classi/funzioni Oggetto
- minuscolo - Eventi
- camelCase - tutto il resto
100% l'assenza di garanzie.Ma, a maggioranza di saggio, questo è accurata.
API JavaScript metodi sono quasi tutti chiamati con lowerCamelCase nomi e JavaScript è case-sensitive
Javascript dovrebbe sempre maiuscole, ma ho visto casi in Internet Explorer dove si tollera tutto maiuscolo per alcuni nomi di funzione, ma non altri.Penso che si è limitato a funzioni che esistono anche in Visual Basic, dal momento che c'è qualche strano consanguineità tra gli interpreti.Chiaramente questo comportamento dovrebbe essere evitato, a meno che, naturalmente, il vostro intento è quello di rendere il codice che viene eseguito solo in un browser :)