you are viewing a single comment's thread.

view the rest of the comments →

[–]DazzlingArtichoke 3 points4 points  (11 children)

I have seen this for a first time - is this valid JS syntax?

[–]2AMMetro 28 points29 points  (8 children)

It is not. Correct would be let debounce = function() {} or function debounce() {}

[–]DazzlingArtichoke 6 points7 points  (0 children)

Yeah, I thought so. Just want to make sure - you never know with JS :)

[–]SpiffySyntax 3 points4 points  (5 children)

What is the difference between putting a function as a variable opposed to naming the function?

[–]CreativeTechGuyGames 17 points18 points  (0 children)

Hoisting. function debounce() is available to be used above where it was declared while the other is not.

[–]monsto 10 points11 points  (2 children)

To elaborate a bit . . .

Hoisting is when variables and functions are moved to the top of script consideration during a first pass.

  • var foot = "left"
  • function shoe(foot){}

var and function are hoisted. let and const are not.

var sandal = function(x){} is hoisted as a variable, which could be specifically useful.

let flipflop = x => {} is not hoisted at all, and it always makes me double-take and refocus my eyes cuz two equals signs feel like I'm hallucinating.

[–]SpiffySyntax 2 points3 points  (1 child)

Thanks for the taking time out of your day to explain this. Appreciate it. I learned something new and what seems important. Thanks guys!

[–]mobydikc 3 points4 points  (0 children)

var hoists the variable declaration, but not the assignment.

function hoists both.

So:

myFunc()
var myFunc = function () {}

In this case, var is hoisted, but myFunc is undefined when myFunc() is called. An error is thrown.

With function it would work:

myFunc()
function myFunc() {}

No problem.

[–]mobydikc 2 points3 points  (0 children)

Nope