MAIN FEEDS
Do you want to continue?
https://www.reddit.com/r/learnjavascript/comments/onix79/javascript_function_facts/h5sp669/?context=9999
r/learnjavascript • u/hsnice • Jul 19 '21
27 comments sorted by
View all comments
20
function declarations aren't the only thing that is hoisted, variable declarations with var are also hoisted.
var
e.g. the following does not work:
console.log('hello', future()); const future = function() { return ' world'; }
1 u/[deleted] Jul 19 '21 Does using var have a higher cost than using let? Does hoisting have a cost? 2 u/[deleted] Jul 19 '21 the only difference is, that you can't redeclare a let/const variable and that var variable are hoisted to the top. There is no cost. 2 u/[deleted] Jul 19 '21 You can redeclare let. I thought the only difference was scoping. 4 u/[deleted] Jul 19 '21 Reassign, yes, but not redeclare. let assignment = 3; assignment = true; let declaring = function() {} let declaring = false; // here will be a redeclaration error -5 u/[deleted] Jul 19 '21 We’ll that’s not really redeclaration is it? You’re assigning 2 variables with the same name? 6 u/[deleted] Jul 19 '21 [removed] — view removed comment 5 u/[deleted] Jul 19 '21 I’ll be honest I thought reassigning was redeclaration.
1
Does using var have a higher cost than using let? Does hoisting have a cost?
2 u/[deleted] Jul 19 '21 the only difference is, that you can't redeclare a let/const variable and that var variable are hoisted to the top. There is no cost. 2 u/[deleted] Jul 19 '21 You can redeclare let. I thought the only difference was scoping. 4 u/[deleted] Jul 19 '21 Reassign, yes, but not redeclare. let assignment = 3; assignment = true; let declaring = function() {} let declaring = false; // here will be a redeclaration error -5 u/[deleted] Jul 19 '21 We’ll that’s not really redeclaration is it? You’re assigning 2 variables with the same name? 6 u/[deleted] Jul 19 '21 [removed] — view removed comment 5 u/[deleted] Jul 19 '21 I’ll be honest I thought reassigning was redeclaration.
2
the only difference is, that you can't redeclare a let/const variable and that var variable are hoisted to the top. There is no cost.
let
const
2 u/[deleted] Jul 19 '21 You can redeclare let. I thought the only difference was scoping. 4 u/[deleted] Jul 19 '21 Reassign, yes, but not redeclare. let assignment = 3; assignment = true; let declaring = function() {} let declaring = false; // here will be a redeclaration error -5 u/[deleted] Jul 19 '21 We’ll that’s not really redeclaration is it? You’re assigning 2 variables with the same name? 6 u/[deleted] Jul 19 '21 [removed] — view removed comment 5 u/[deleted] Jul 19 '21 I’ll be honest I thought reassigning was redeclaration.
You can redeclare let. I thought the only difference was scoping.
4 u/[deleted] Jul 19 '21 Reassign, yes, but not redeclare. let assignment = 3; assignment = true; let declaring = function() {} let declaring = false; // here will be a redeclaration error -5 u/[deleted] Jul 19 '21 We’ll that’s not really redeclaration is it? You’re assigning 2 variables with the same name? 6 u/[deleted] Jul 19 '21 [removed] — view removed comment 5 u/[deleted] Jul 19 '21 I’ll be honest I thought reassigning was redeclaration.
4
Reassign, yes, but not redeclare.
let assignment = 3; assignment = true; let declaring = function() {} let declaring = false; // here will be a redeclaration error
-5 u/[deleted] Jul 19 '21 We’ll that’s not really redeclaration is it? You’re assigning 2 variables with the same name? 6 u/[deleted] Jul 19 '21 [removed] — view removed comment 5 u/[deleted] Jul 19 '21 I’ll be honest I thought reassigning was redeclaration.
-5
We’ll that’s not really redeclaration is it? You’re assigning 2 variables with the same name?
6 u/[deleted] Jul 19 '21 [removed] — view removed comment 5 u/[deleted] Jul 19 '21 I’ll be honest I thought reassigning was redeclaration.
6
[removed] — view removed comment
5 u/[deleted] Jul 19 '21 I’ll be honest I thought reassigning was redeclaration.
5
I’ll be honest I thought reassigning was redeclaration.
20
u/[deleted] Jul 19 '21
function declarations aren't the only thing that is hoisted, variable declarations with
varare also hoisted.e.g. the following does not work: