JS面试题:变量声明的提升,javascript的变量声明提升

桃扇骨 2022-05-24 22:47 424阅读 0赞

变量声明(定义变量)提升:

  1. 在预编译阶段,编译器会把所有定义的变量全部提升到最顶部,即,把变量声明的语句会自动放置到开始。换句话说,经过预编译后,在任何函数里,一开始是全部的变量声明。
  2. //示例一:
  3. /*
  4. function func1(){
  5. alert(v1);
  6. var v1;
  7. }
  8. //等价于(即预编译后):
  9. function func1(){
  10. var v1;
  11. alert(v1);
  12. }
  13. */
  14. //示例二:
  15. /*
  16. function func1(){
  17. alert(v1);//弹出undefined,因为,只做声明的提升,不做赋值的提升
  18. var v1=5;
  19. }
  20. //等价于(即预编译后):
  21. function func1(){
  22. var v1;//声明提升了,但是赋值没有提升
  23. alert(v1);
  24. v1=5;
  25. }
  26. */
  27. /*
  28. //示例三:
  29. function func1(){
  30. alert(i);//弹出 undefined,因为,只做声明的提升,不做赋值的提升
  31. alert(j);//弹出 undefined,因为,只做声明的提升,不做赋值的提升
  32. for(var i=0;i<10;i++){
  33. for(var j=0;j<10;j++){
  34. }
  35. }
  36. }
  37. //等价于:
  38. function func1(){
  39. var i;
  40. var j;
  41. alert(i);
  42. alert(j);
  43. for(i=0;i<10;i++){
  44. for(j=0;j<10;j++){
  45. }
  46. }
  47. }
  48. */

如果有全局变量,并且全局变量和局部变量重名

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <input type="button" value="测试" οnclick="func1()" /><br/>
  9. </body>
  10. </html>
  11. <script type="text/javascript">
  12. //示例一:
  13. var v1=200;
  14. function func1(){
  15. alert(v1);//弹出undefined;
  16. var v1=300;
  17. }
  18. //等价于(预编译后):
  19. var v1=200;
  20. function func1(){
  21. var v1;
  22. alert(v1);//弹出undefined;
  23. v1=300;
  24. }
  25. </script>

发表评论

表情:
评论列表 (有 0 条评论,424人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript变量声明提升

    变量提升 JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运行。这造成的结果,就是所有的变量的声明语句,都会被提升到代码的头部,这