1. <html>
  2. <head>
  3. <title>函数提升</title>
  4. <script language="javascript" type="text/javascript">
  5. //在全局对象中声明两个全局函数,反模式
  6. function foo()
  7. {
  8. alert("global foo");
  9. }
  10. function bar()
  11. {
  12. alert("global bar");
  13. }
  14. //定义全局变量
  15. var v = "global var";
  16. function hoistMe()
  17. {
  18. alert(typeof foo); //function
  19. alert(typeof bar); //undefined
  20. alert(v); //undefined
  21. //为什么bar函数和变量v是未定义而不是全局变量中定义的相应的函数变量呢?
  22. //因为函数里面定义了同名的函数和变量,无论在函数的任何位置定义这些函数和
  23. //和变量,它们都将被提升到函数的最顶部。
  24. foo(); //local foo
  25. bar(); //报错,缺少对象
  26. //函数声明,变量foo以及其实现被提升到hoistMe函数顶部
  27. function foo()
  28. {
  29. alert("local foo");
  30. }
  31. //函数表达式,仅变量bar被提升到函数顶部,实现没有被提升
  32. var bar = function()
  33. {
  34. alert("local bar");
  35. };
  36. //定义局部变量
  37. var v = "local";
  38. }
  39. (function()
  40. {
  41. hoistMe();
  42. })();
  43. //函数表达式和变量表达式只是其声明被提升,函数声明是函数的声明和实现都被提升。
  44. /**由于函数提升的效果,hoistMe方法相当于
  45. function hoistMe()
  46. {
  47. //函数声明,变量foo以及其实现被提升到hoistMe函数顶部
  48. function foo()
  49. {
  50. alert("local foo");
  51. }
  52. //函数表达式,仅变量bar被提升到函数顶部,实现没有被提升(同变量提升)
  53. var bar = undefined;
  54. //变量声明被提升
  55. var v = undefined;
  56. alert(typeof foo); //function
  57. alert(typeof bar); //undefined
  58. foo(); //local foo
  59. bar(); //报错,缺少对象
  60. bar = function()
  61. {
  62. alert("local bar");
  63. };
  64. v = "local";
  65. }
  66. */
  67. </script>
  68. </head>
  69. <body>
  70. </body>
  71. </html>

最新文章

  1. 7 Container With Most Water_Leetcode
  2. React Native IOS源码初探
  3. [Java拾遗四]JavaWeb基础之Servlet_Request&amp;&amp;Response
  4. UVa OJ 175 - Keywords (关键字)
  5. Protocol Buffers(Protobuf)开发者指南---概览
  6. IntelliJ IDEA 14注册码
  7. Linux驱动设计——并发与竞态控制
  8. 学生信息管理 --- c语言实现
  9. Android(java)学习笔记119:继承中父类没有无参构造
  10. 前端图片预览,上传前预览,兼容IE7、8、9、10、11,Firefox,Chrome(学习到的知识)
  11. Java集合之Stack 源码分析
  12. Log4j配置文件内容详解
  13. django2.0+linux服务器 ,如何让自己电脑访问
  14. mysql 表中已经存在数据 修改字段类型 varchar(11) 改为 int(11)
  15. Consul+upsync+Nginx实现动态负载均衡 摘自https://blog.csdn.net/qq_29247945/article/details/80787014
  16. mybatis LIKE
  17. JasperReports+iReport在eclipse中的使用(转)
  18. git生成Key操作保存到GITHUB中
  19. [less]用webstorm自动编译less产出css和sourcemap
  20. Html5中 视频 音频标签 进度条问题

热门文章

  1. html代码转义到js时,往往会遇到问题,这代码实现html和js互转
  2. Maven实战(三)Eclipse构建Maven项目
  3. [LeetCode]题解(python):110 Balanced Binary Tree
  4. hdu1241 Oil Deposits
  5. QQ聊天气泡(图片拉伸不变样)、内容尺寸定制(高度随字数、字体而变)
  6. Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never diffe
  7. java版本区别
  8. 每日目标——HTML 头部标签学习 2015-8-27
  9. C语言:通过返回指针的形式找出数组的最大值和最小值
  10. Tomcat启动时自动加载一个类