Hoisting in JavaScript and function scope issues with keyword var

Поділитися
Вставка
  • Опубліковано 18 лис 2024

КОМЕНТАРІ • 179

  • @Sarmadfarhankhan
    @Sarmadfarhankhan 7 років тому +41

    whenever I have doubts in JavaScript , I think of techsith 😉

  • @NishantGupta_Neo
    @NishantGupta_Neo 6 років тому +1

    No one has explained Hoisting, let alone the reasons for hoisting in such a lucid manner !

    • @Techsithtube
      @Techsithtube  6 років тому +1

      I hope it cleared the concept for you . Thanks for watching Nishant!

    • @NishantGupta_Neo
      @NishantGupta_Neo 6 років тому

      techsith without a shadow of doubt!

  • @anacarolinamedeiroslabeca2761
    @anacarolinamedeiroslabeca2761 7 років тому +17

    Very nice video. Finally understood the issues of using var and the advantage of using ECMAScript 6 'let' keyword instead. Thank you very much!

    • @Techsithtube
      @Techsithtube  7 років тому

      Glad to know. Thanks for watching :)

  • @UrbanBDKNY
    @UrbanBDKNY 7 років тому +6

    Thanks for the video. The best information I got from this video is that let is block scope. That goes a long way towards knowing how to use it and how it is different from var which is function scoped etc

  • @mdawadud3520
    @mdawadud3520 5 років тому

    I really appreciate it because it is more clear than all video i get over the internet and please show us a complete video course about zero to advance level. thanks

    • @Techsithtube
      @Techsithtube  5 років тому

      Shiplu I have a full course here udemy.com/js-masterclass/

  • @himanshushah2683
    @himanshushah2683 6 років тому

    The best explanation in all the tutorials video. not found better than your explain.keep posting, keep sharing .

  • @joshrochon6243
    @joshrochon6243 6 років тому +3

    Wow, hilarious. When you brought up the thing about the interview. Had one today, they asked me about hoisting, and i didn't do so great, and now I'm here

  • @subhashmahimaluri
    @subhashmahimaluri 6 років тому

    You are very good teacher, explained with examples. I have learned lot of things from your tutorials.

  • @ankitkumarvashist8991
    @ankitkumarvashist8991 5 років тому

    You are a great teacher , i have doubts even after watching other JS tutorial, as they teach the syntax only, not clarifying the doubts why we use any particular syntax what it does. #Love and Respect to you from INDIA.

    • @Techsithtube
      @Techsithtube  5 років тому +1

      I am glad it helped. THanks for watching and keep learning!

  • @arpitdubey17
    @arpitdubey17 5 років тому +1

    i really appreciate your work....and your teaching skill are awesome....simple and easy to learn by you.....................thank you so much..........

  • @justyna6134
    @justyna6134 2 роки тому

    I like your style of explaining the issues - respect ! Thank you !!!

  • @gaurab1247
    @gaurab1247 7 років тому +1

    Thanks for making ours life tremendously easy.I have been watching all of your's tutorials and you have a great teacher in you.Keep it up.It would be great if you come up with some DS/Algo tutorial as well.

  • @piashmehedi
    @piashmehedi 6 років тому +8

    techsith is simply best for javascipt :)

  • @krishnat9767
    @krishnat9767 6 років тому +3

    Excellent..simple and straightforward..

  • @vinodhpaul3870
    @vinodhpaul3870 6 років тому

    I really love the way you explain the most confusing concepts in js...Feels like you have the right choice of words that trigger my brain to understand..lol. I will make sure to follow your vids regularly. Keep posting cheers!!!!

  • @vicentec1521
    @vicentec1521 6 років тому +1

    Mozilla needs to hire you to simplify their documentation! Thank you very much!

  • @mahesh82398
    @mahesh82398 7 років тому

    Best clarification of let and const keywords, i have seen so far. Thanks Sir :)

  • @anishvijay6445
    @anishvijay6445 3 роки тому

    I really enjoyed the video and understood all the concepts related hoisting and issues of constants

  • @souravsuman2633
    @souravsuman2633 4 роки тому

    It was very helpful sir ....... explanation was clear and perfect....

  • @BigMoneySniper
    @BigMoneySniper 7 років тому +2

    Your unbelievable man.... Straight up unbelievable. God has blessed us with hell of a JS Guru. I wont take this blessing for granted. Unbelievable should be your nickname brotha. Keep up the amazing work.

  • @ahmedboutaraa8771
    @ahmedboutaraa8771 5 років тому

    your tutorials are art int itself

  • @indrajitmate2904
    @indrajitmate2904 6 років тому

    Best simple n most understandable concept .....

  • @MajidEltayebZ
    @MajidEltayebZ 4 роки тому

    Thanks for your simple explanation, this really means you understand what you're talking about, keep going (Y).

  • @pramodkumarw
    @pramodkumarw 6 років тому

    Awesome example with simple explanation and presentation

  • @AmeerHamza-jy5ml
    @AmeerHamza-jy5ml 5 років тому +1

    Thnaks Respected Sir 🤗 Lot of Love from PAK

    • @Techsithtube
      @Techsithtube  5 років тому

      Keep on learning brother and thanks for the kind comment.

  • @tranhuy2304
    @tranhuy2304 7 років тому

    thank you for covering this, its really clear out everything i want to know. So near the end of the video when you declare the var y = 2 outside the function expression even though inside the function it already had the console.log for y before we initialize the y with 1 so thats when the hoisting kicked in rather than the lexicial scope rule where every outer environment can be accessed inside function so in this case the hoisting just declare the variable y and not initialize any value for the variable y so in this case undefined. So far i think javascript is the only language that one declare a variable in a global scope you can literally use it almost any where, javascript function is also an object itself. It would be nice to see you explain about the scope chain and closure🤔🤔But keep up the good work bro

    • @Techsithtube
      @Techsithtube  7 років тому

      I do have a video on both scope chain and closures. you can check it out. Thanks for watching!

  • @Carl-yu6uw
    @Carl-yu6uw 5 років тому +1

    Mr T Sith, so clear, so useful, so thank you!

  • @damoon_az2465
    @damoon_az2465 7 років тому +1

    Great explanations, your video made hoisting much easier to understand:)

  • @shyam123m
    @shyam123m 5 років тому

    Simple and perfect explanation. Thanks Sir.

  • @vishnum9747
    @vishnum9747 2 роки тому

    Your videos are so informative keep uploading new videos

  • @vohoangan6121
    @vohoangan6121 4 роки тому

    Well explain so easy to understand, thank you so much

  • @TheSuyashgupta
    @TheSuyashgupta 4 роки тому

    felt happy after seeing the video, doubt cleared

  • @Pm80334
    @Pm80334 5 років тому +1

    Best in business , fantastic to say the least▶️

    • @Techsithtube
      @Techsithtube  5 років тому

      Thanks Prasad for watching and an Awesome comment.

  • @davitjanashia9344
    @davitjanashia9344 4 роки тому

    Very clear and intelligent explanation! Thank you! 💡 👍🏻

  • @shashankpandey1019
    @shashankpandey1019 5 років тому +2

    Really a great tutorial , I have ever seen.

  • @heshankumarasinghe3159
    @heshankumarasinghe3159 4 роки тому

    Thank you. This video has been really helpful. I learnt new things......

    • @Techsithtube
      @Techsithtube  4 роки тому +1

      Glad it was helpful! Thanks for watching!

  • @edwinrodriguez9025
    @edwinrodriguez9025 5 років тому +1

    great explanation about the scopes. Thanks

  • @quarter-lifecrisis5127
    @quarter-lifecrisis5127 4 роки тому

    so simple and informative ❤👍🏻 thank you

  • @abhaysehgal5457
    @abhaysehgal5457 7 років тому +1

    awesome video sir....just one advice i want to give you please put this video in top of this playlist...as i started watching your playlist and in above videos you have used "let" then for finding difference between var and let takes a lot of time...but after watching this video i get completely understand the difference between these two...once again thank you so much...waiting for more videos :)

  • @salmanmoin3588
    @salmanmoin3588 5 років тому

    very nicely defined, pls keep on doing advanced JS topics incl arrow fn etc.

    • @Techsithtube
      @Techsithtube  5 років тому

      salman , I have tones of topics on JS inducing arrow functions and advance JavaScript. please check it out. THanks for watching!

  • @mohamedelhousany4960
    @mohamedelhousany4960 5 років тому +1

    you are good resource to learn js

  • @rakeshpatidar4426
    @rakeshpatidar4426 7 років тому

    It's amazing, The way of representation is awesome.

  • @dhilipkumar5867
    @dhilipkumar5867 6 років тому

    Nice explanation..keep doing the good work

  • @faisaltalukder5425
    @faisaltalukder5425 2 роки тому

    Effective Vedio for learning ✅

  • @neilpearce
    @neilpearce 6 років тому

    It's during the execution context, the JS engine will store all variable and function declarations in memory. Every function creates its own execution context and memory bank. That's why you can call/evoke a function before it is defined, because that declaration has already been stored. ;-)

  • @NihilismEnjoyer98
    @NihilismEnjoyer98 5 років тому

    Who... Who... Would dislike this great video XD... The condition could be they didn't want to learn anything XD ....
    Great explanation as always!

    • @Techsithtube
      @Techsithtube  5 років тому

      Thanks buddy. I appreciate the comment. Thanks for watching!

  • @redeeshrv3319
    @redeeshrv3319 6 років тому +1

    Superb !!! Please do some videos on JavaScript common patterns

    • @Techsithtube
      @Techsithtube  6 років тому

      I do have plans for that. Will start making them soon.

  • @amanueltadesse1655
    @amanueltadesse1655 5 років тому +2

    the best place to look things

  • @shikharchaudhary6984
    @shikharchaudhary6984 5 років тому +1

    Best explanation.

  • @xuelianwang5300
    @xuelianwang5300 6 років тому +3

    Super Clear! Thank you!

  • @anupsingh24
    @anupsingh24 7 років тому +1

    Great video buddy, cleared my doubts.

  • @yanivsalman9685
    @yanivsalman9685 7 років тому +1

    this is the best video on that subject. i think you should do some udemy curses so you will se some money of your work!

    • @Techsithtube
      @Techsithtube  7 років тому +1

      Thanks . I am thinking of building a udemy course.

  • @Dipenparmar12
    @Dipenparmar12 5 років тому +1

    Great work... keep it up 💪😄😃

  • @Paunitza
    @Paunitza 3 роки тому

    Great explanation. Thank you!

    • @Techsithtube
      @Techsithtube  3 роки тому

      Glad it was helpful! Thanks for watching!

  • @catherinecordova512
    @catherinecordova512 6 років тому

    This was so clear and helpful! Thank you!!!

    • @Techsithtube
      @Techsithtube  6 років тому

      Thanks for watching Catherine! :)

  • @prostoLelouch
    @prostoLelouch 7 років тому +1

    Thanks for this tutorial! You did a great job!

  • @mustaphag
    @mustaphag 7 років тому +1

    Excellent Video. Keep up the good job

  • @hemantgajbe8366
    @hemantgajbe8366 5 років тому

    Thank you Sir for clearing concepts !!

  • @rohil3023
    @rohil3023 4 роки тому

    This helped me understand hoisting thanks alot :)

  • @chirashankar4495
    @chirashankar4495 4 роки тому

    Can you please explain the second part where you assign 2 to var y and then if you comment out the other assignment to the same variable the console.log would display 2.

  • @YOUTUBE_IS_WOKE
    @YOUTUBE_IS_WOKE 4 роки тому

    great explanation, thank you.

  • @swathikumar3074
    @swathikumar3074 4 роки тому

    whenever create any variable with var keyword it will be added to window (dom) object directly so it will be available in that particular context var is like global variable. var v; console.log(window.v);-->u will get undefined not an error

  • @vishalprajapti3544
    @vishalprajapti3544 4 роки тому

    Very helpful tutorial....

  • @sahilarora7186
    @sahilarora7186 4 роки тому

    That was clean sir. Thank you

  • @100krishna100
    @100krishna100 7 років тому +2

    Thanks for the video. Can I know the difference between lexical scoping and function Closures?

    • @Techsithtube
      @Techsithtube  7 років тому

      lexical scoping means variable defined outside the function is available inside. Function closure is , when a function uses a variable defined outside because of the lexical scoping, it will hold it inside a thing call closure ( internally) , so if you return this function it will persists the value where ever its used. I do have few tutorials on it. one is called closure, another is function chaining and there is also a tutorial on function mixins which uses closures.

  • @manojkumarganigapeta2966
    @manojkumarganigapeta2966 6 років тому +1

    nice video it's really helping to me thanks sir , have you done any video on design patterns in javascript sir?

    • @Techsithtube
      @Techsithtube  6 років тому

      I am using design patterns in many places. Here are some of the videos.
      call, apply and bind: ua-cam.com/users/edit?o=U&video_id=AYVYxezrMWA
      Decorator pattern: ua-cam.com/video/_8wOde1fmEM/v-deo.html
      Factory Pattern: ua-cam.com/video/DpGuDFK4xss/v-deo.html

  • @utkarshkandpal5960
    @utkarshkandpal5960 6 років тому +1

    Your videos are Vader Level!

    • @Techsithtube
      @Techsithtube  6 років тому

      the best way to explain the dark side of JavaScript :)

  • @woofwoofunited
    @woofwoofunited 6 років тому

    Well explained, thank you. Is there ever a usecase where you would rather use var instead of let?

    • @Techsithtube
      @Techsithtube  6 років тому

      You should not use 'var' at all . its anipattern.

    • @woofwoofunited
      @woofwoofunited 6 років тому

      Thanks I use const or let instead, from experience though has there been a usecase where var is preferred to let. Im assuming no?

    • @Techsithtube
      @Techsithtube  6 років тому

      yes use let or const , and never use var.

    • @woofwoofunited
      @woofwoofunited 6 років тому

      Thank you, well done on making such a good video!

  • @davideugene7911
    @davideugene7911 7 років тому +1

    Merci beaucoup. C'était très clair :)

    • @Techsithtube
      @Techsithtube  7 років тому

      Merci d'avoir regardé :)

    • @davideugene7911
      @davideugene7911 7 років тому

      :)
      So you speak French?

    • @Techsithtube
      @Techsithtube  7 років тому

      Little bit. Few years ago, I stayed in Paris for few months. That's when I learnt french.

  • @parasmaniseth7873
    @parasmaniseth7873 3 роки тому +1

    Interviewer : do u watch techsith
    Me: yes
    Interviewer : you are hired

    • @Techsithtube
      @Techsithtube  3 роки тому +1

      I hope that did really happened :)

    • @parasmaniseth7873
      @parasmaniseth7873 3 роки тому

      I have mentioned ur channel in the interview and got to know that interviewer also follows u🤪

  • @AngeliqueGia
    @AngeliqueGia 5 років тому +1

    Best tutorial! Thanks

  • @ganapathilana7069
    @ganapathilana7069 3 роки тому

    clear example. thanks

  • @specsbattle1340
    @specsbattle1340 5 років тому +1

    Yep this was in my interview today lol.

    • @Techsithtube
      @Techsithtube  5 років тому

      Hope you answered it correctly. . :)

    • @specsbattle1340
      @specsbattle1340 5 років тому +2

      @@Techsithtube not quiet, I was not too clear about the var behavior in functional scope vs block scope. Now I am much more clear on this topic thanks to you. I also watched and liked your setTimeout with var and let, that was the exact question she asked. I am also making videos on my channel about tech interviews, I think the best way to learn is to teach. Now I am more confident to go to any UI interviews because as far as I know, scope questions always come up and now I should able to explain the weird behavior of var.

  • @ashwinichougale3432
    @ashwinichougale3432 3 роки тому +1

    Very nice video.

  • @satyendrakannaujiya187
    @satyendrakannaujiya187 6 років тому +1

    Thanks great tutorial

  • @angelcaru
    @angelcaru 5 років тому

    Another thing with var and let is:
    var x = x; gives you a variable x with the value of undefined
    but let x = x gives you Uncaught ReferenceError: Cannot access 'x' before initialization
    at whateveryourfileis.js:whateverthelinenumberis:whateverthecolumnnumberis

  • @shilpasyal55
    @shilpasyal55 6 років тому

    Great Video. Thanks 😊

  • @jacksto123
    @jacksto123 5 років тому

    Thanks for the video. Is var still used often? Or is everyone using let and const now?

    • @Techsithtube
      @Techsithtube  5 років тому +1

      I think you should only use let and const. now that most browsers supports it.

  • @naren6666
    @naren6666 7 років тому +1

    Awesome tutorials...

  • @codeative
    @codeative 6 років тому +1

    You're amazing .. thank you

  • @volodymyrkhimiak1460
    @volodymyrkhimiak1460 7 років тому +1

    ДЯКУЮ!!! It is "Thank you" in Ukrainian!

    • @Techsithtube
      @Techsithtube  7 років тому

      धन्यवाद in hindi. Thanks for watching!

  • @ScienceExploration101
    @ScienceExploration101 5 років тому +1

    Ur the best

    • @Techsithtube
      @Techsithtube  5 років тому

      Thanks Ankit for a an awesome comment

  • @alinawaz4034
    @alinawaz4034 5 років тому

    nice Explanation

  • @av5226
    @av5226 5 років тому

    can someone explain the interview question ? why is y not 2 ? because of hoisting ??

  • @nobir98
    @nobir98 2 роки тому

    I think 'let' do hoisting but it doesn't assign to default value undefined. it assign where the developer declared. I might be wrong though

  • @legendarygaming7790
    @legendarygaming7790 3 роки тому

    Great Video.

  • @customdev7078
    @customdev7078 5 років тому

    hey..@techsith
    what are uses of varaible hoasiting ..

    • @Techsithtube
      @Techsithtube  5 років тому

      There is no use of variable hoisting its one of the side effect of functional scope .

  • @iqraabdulrauf3402
    @iqraabdulrauf3402 5 років тому +1

    good one

  • @rajashekhar433
    @rajashekhar433 4 роки тому

    Looking for more videos on cloud

  • @tathagata1000
    @tathagata1000 4 роки тому

    Good one, thanks

  • @DominicVictoria
    @DominicVictoria 5 років тому

    Uhm. Are they really garbage collected? How does function factories work then? doesn't function factories return a reference of an object that was created inside the factory?

  • @kaushikdalvi4641
    @kaushikdalvi4641 6 років тому

    Thank you so much!

  • @MahanteshGurav
    @MahanteshGurav 5 років тому

    Thank you.

  • @zaibkhan4862
    @zaibkhan4862 7 років тому

    Really help me :) Thank you

  • @akbaralimajeed
    @akbaralimajeed 5 років тому

    Nailed it

  • @deeproy7292
    @deeproy7292 5 років тому

    thank you

  • @amanansari5567
    @amanansari5567 5 років тому +1

    great

  • @carlosw9379
    @carlosw9379 6 років тому

    Thanks!

  • @gabovanlugo
    @gabovanlugo 7 років тому +1

    Awesome!

  • @taniamehta9663
    @taniamehta9663 5 років тому

    Let is also doing hoisting
    If (true) {
    Console.log (y);
    Let y= 1;
    }
    O/p undefined

    • @Techsithtube
      @Techsithtube  5 років тому +1

      there is diffrenct between undefined and "not defined error" here you are going to get an error which means that when the line console.log(y) executes there is no y. so it will give an error like "can't access lexical declaration `y' before initialization" Now, in case of var where hoisting happens there wont be an error , the value of y would be undefined.