Javascript中函数及变量定义的提升
2024-09-23 23:54:59
- <html>
- <head>
- <title>函数提升</title>
- <script language="javascript" type="text/javascript">
- //在全局对象中声明两个全局函数,反模式
- function foo()
- {
- alert("global foo");
- }
- function bar()
- {
- alert("global bar");
- }
- //定义全局变量
- var v = "global var";
- function hoistMe()
- {
- alert(typeof foo); //function
- alert(typeof bar); //undefined
- alert(v); //undefined
- //为什么bar函数和变量v是未定义而不是全局变量中定义的相应的函数变量呢?
- //因为函数里面定义了同名的函数和变量,无论在函数的任何位置定义这些函数和
- //和变量,它们都将被提升到函数的最顶部。
- foo(); //local foo
- bar(); //报错,缺少对象
- //函数声明,变量foo以及其实现被提升到hoistMe函数顶部
- function foo()
- {
- alert("local foo");
- }
- //函数表达式,仅变量bar被提升到函数顶部,实现没有被提升
- var bar = function()
- {
- alert("local bar");
- };
- //定义局部变量
- var v = "local";
- }
- (function()
- {
- hoistMe();
- })();
- //函数表达式和变量表达式只是其声明被提升,函数声明是函数的声明和实现都被提升。
- /**由于函数提升的效果,hoistMe方法相当于
- function hoistMe()
- {
- //函数声明,变量foo以及其实现被提升到hoistMe函数顶部
- function foo()
- {
- alert("local foo");
- }
- //函数表达式,仅变量bar被提升到函数顶部,实现没有被提升(同变量提升)
- var bar = undefined;
- //变量声明被提升
- var v = undefined;
- alert(typeof foo); //function
- alert(typeof bar); //undefined
- foo(); //local foo
- bar(); //报错,缺少对象
- bar = function()
- {
- alert("local bar");
- };
- v = "local";
- }
- */
- </script>
- </head>
- <body>
- </body>
- </html>
最新文章
- 7 Container With Most Water_Leetcode
- React Native IOS源码初探
- [Java拾遗四]JavaWeb基础之Servlet_Request&;&;Response
- UVa OJ 175 - Keywords (关键字)
- Protocol Buffers(Protobuf)开发者指南---概览
- IntelliJ IDEA 14注册码
- Linux驱动设计——并发与竞态控制
- 学生信息管理 --- c语言实现
- Android(java)学习笔记119:继承中父类没有无参构造
- 前端图片预览,上传前预览,兼容IE7、8、9、10、11,Firefox,Chrome(学习到的知识)
- Java集合之Stack 源码分析
- Log4j配置文件内容详解
- django2.0+linux服务器 ,如何让自己电脑访问
- mysql 表中已经存在数据 修改字段类型 varchar(11) 改为 int(11)
- Consul+upsync+Nginx实现动态负载均衡 摘自https://blog.csdn.net/qq_29247945/article/details/80787014
- mybatis LIKE
- JasperReports+iReport在eclipse中的使用(转)
- git生成Key操作保存到GITHUB中
- [less]用webstorm自动编译less产出css和sourcemap
- Html5中 视频 音频标签 进度条问题
热门文章
- html代码转义到js时,往往会遇到问题,这代码实现html和js互转
- Maven实战(三)Eclipse构建Maven项目
- [LeetCode]题解(python):110 Balanced Binary Tree
- hdu1241 Oil Deposits
- QQ聊天气泡(图片拉伸不变样)、内容尺寸定制(高度随字数、字体而变)
- 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
- java版本区别
- 每日目标——HTML 头部标签学习 2015-8-27
- C语言:通过返回指针的形式找出数组的最大值和最小值
- Tomcat启动时自动加载一个类