Vinnaren i pepparkakshustävlingen!
2017-10-16, 09:09
  #1
Medlem
Philly000s avatar
Hej! Håller på och lär mig JS och körde en simpel IIFE sats med window som argument:

Kod:
var a = 2;
var b = 5;

(function(global) { 
	console.log("adding...");
	console.log(global.a + global.b);	
}(window));

Detta ger output som förväntat:
adding...
7

Men om jag deklarerar a och b som let istället:
Kod:
let a = 2;
let b = 5;

(function(global) { 
	console.log("adding...");
	console.log(global.a + global.b);	
}(window));

så ger det:
adding...
NaN

Vad beror detta på?

Mvh
Citera
2017-10-16, 09:59
  #2
Medlem
hmkns avatar
At the top level of programs and functions, let, unlike var, does not create a property on the global object. For example:

Kod:
var x = 'global';
let y = 'global';
console.log(this.x); // "global"
console.log(this.y); // undefined

https://developer.mozilla.org/en-US/...Statements/let
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback