JavaScript中全局变量和局部变量以及var关键字的有趣案例(变量提升/变量前置)

拼搏现实的明天。 2022-11-05 12:58 242阅读 0赞

JavaScript中undefined和is not defined异常

不解释,直接看代码

  1. <script type="text/javascript">
  2. function f() {
  3. console.log(userName); //undefined
  4. //局部变量(在函数内,使用var关键字声明的变量是局部变量)
  5. var userName = '陈宇寒'; //userName是局部变量
  6. }
  7. f();
  8. // var str2 = "于都县";
  9. //上面那一行代码注释掉就会报错str2 is not defined,上面那一行代码不注释掉就会打印于都县
  10. // console.log(str2);
  11. console.log(str1); //undefined
  12. //变量提升/变量前置(变量的声明会自动前置,变量的赋值还是留在原来的位置上)
  13. var str1 = "赣南脐橙";
  14. function t1() {
  15. // console.log("-----" + str2); //str2 is not defined
  16. //全局变量(在函数内,没有使用var关键字声明的变量是全局变量)
  17. str2 = '江西赣州于都县'; //str2是全局变量
  18. console.log("#####" + str2); //#####江西赣州于都县
  19. console.log("!!!!!" + window.str2); //!!!!!江西赣州于都县
  20. }
  21. t1();
  22. console.log("*****" + str2); //*****江西赣州于都县
  23. console.log("=====" + window.str2); //=====江西赣州于都县
  24. function hi() {
  25. //在函数内,凡是没有使用var关键字声明的变量,最终都会成为全局对象window的属性
  26. money = 666; //在函数内,凡是没有使用var关键字声明的变量,该变量最终都会成为全局变量
  27. console.log(money); //666
  28. console.log(window.money); //666
  29. }
  30. hi();
  31. console.log(money); //666
  32. console.log(window.money); //666
  33. </script>

运行结果如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2N6aDUwMA_size_16_color_FFFFFF_t_70

以后有时间我再详细的讲讲JavaScript中的变量提升/变量前置。

发表评论

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

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

相关阅读