Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Advantages of using let over var within a function [duplicate]

Say I have a piece of code like this:

const number = 3;

function fooFunction() {
  let numberTwo = 5;
  var answer = number + numberTwo;
  return answer;
}

finalAnswer = fooFunction();

console.log(finalAnswer);

Assuming an ES2015 compatible browser, what would be the advantages/disadvantages of using the above code, over:

const number = 3;

function fooFunction() {
  var numberTwo = 5;
  var answer = number + numberTwo;
  return answer;
}

finalAnswer = fooFunction();

console.log(finalAnswer);

Are there any advantages or disadvantages, given they both return the same number?

like image 363
Peter David Carter Avatar asked May 20 '16 17:05

Peter David Carter


2 Answers

As others have mentioned, in your example you can use let and var interchangeably. The difference is that let is block-scoped and var is not.

For example with var you can do this (prints 'foo'):

function printFoo(param) {
  if (param) {
    var x = "foo";
  }

  console.log(x);
}

printFoo("hello");

You cannot do this with let because let x is scoped to the if block and therefore is not defined.

like image 172
Jared Avatar answered Oct 10 '22 03:10

Jared


Within the code sample you've provided, the two are interchangeable. Where let comes in handy is in limiting the scope to block-level as opposed to function-level. Using let inside of a for loop, for example.

It's worth noting that variables created with the var keyword are hoisted, whereas variables created with the let keyword are not.

There is an excellent breakdown of this topic by Kyle Simpson on David Walsh's blog: https://davidwalsh.name/for-and-against-let#implicit-hazards

like image 41
SimianAngel Avatar answered Oct 10 '22 04:10

SimianAngel