Discussion:
undefined med og uden typeof()
(for gammel til at besvare)
scootergrisen
2013-12-14 18:15:35 UTC
Permalink
En som kan forklare forskellen på denne kode og hvorfor de ikke virker ens ?

---

// giver 'EventSource' er ikke defineret FEJL
if (EventSource !== undefined) {

// giver ikke fejl
if (typeof(EventSource) !== 'undefined') {

---

Jeg læste et sted at man lige så godt kunne bruge (x !== undefined) i
stedet for (typeof(x) !== 'undefined') men det ser ikke ud til at virke
ved EventSource.
Jonathan Stein
2013-12-15 14:13:39 UTC
Permalink
Post by scootergrisen
// giver 'EventSource' er ikke defineret FEJL
if (EventSource !== undefined) {
Den kan du kun bruge, hvis EventSource findes, men værdien er udefineret
- f.eks.

var EventSource;
...
if (EventSource !== undefined) {

typeof returnerer "undefined" både når variablen slet ikke findes og når
den findes, men værdien er udefineret.

M.v.h.

Jonathan
scootergrisen
2013-12-15 22:18:16 UTC
Permalink
EventSource er noget browseren kan understøtte og det er så det jeg vil
teste for så det er ikke en variabel jeg selv skal lave.

Men disse 2 linie giver ikke samme resultat når browseren ikke
understøtte EventSource og det er det jeg undre mig over.

if (EventSource !== undefined) {
if (typeof(EventSource) !== 'undefined') {
Jonathan Stein
2013-12-16 16:47:41 UTC
Permalink
Post by scootergrisen
EventSource er noget browseren kan understøtte og det er så det jeg vil
teste for så det er ikke en variabel jeg selv skal lave.
Det er for så vidt lige meget, om det er dig selv eller browseren, der
skal definere variablen. Pointen er, at du bruger en variabel, der ikke
er defineret.

Du må skelne mellem, om variablen ikke er defineret, - eller om den
faktisk ER defineret, men dens VÆRDI er udefineret.

typeof er ikke en funktion, men en operator, og den er designet, så man
kan bruge den med både udefinerede variabler og definerede variabler med
udefineret værdi.
Det lidt forvirrende er måske, at den i begge tilfælde giver værdien
"undefined".

M.v.h.

Jonathan

Loading...