js 变量 函数名的提升
来源:互联网 发布:网站推广工作是seo吗 编辑:程序博客网 时间:2024/06/04 18:34
函数定义时候
function 函数名(){
......
}
调用时候,可以在函数之前调用 函数名();这就是函数名的提升
如果采用赋值的方式定义函数
例如
<pre name="code" class="javascript"><script type="text/javascript">alert(foo); //打印函数2window.onload=function(){alert(foo);//打印函数1 将2覆盖document.write(foo(20)); //执行函数1}//赋值定义函数 函数1var foo = function(){return 11;}//声明式定义函数 函数2function foo(x) { if (x > 100) { var tmp = x - 100; } return tmp;}</script>
函数2 定义后直接提升到代码头部,所以第一个 alert(foo)打印函数2的内容。
函数1定义后,相当于覆盖了函数2的定义,所以onload中的alert打印函数1的内容。document.write
执行函数一也就理所应当了。如果没有函数2,在上面调函数foo将会打印undefined,也就是这种方式函数不会提升
其实函数一在生命时候,变量foo也提升至代码头部 ,但是没有赋值,执行到函数1位置时候才将匿名函数赋值给变量foo。
既然如此,变量foo 和函数foo 均提升到代码头部,那么代码如果改成这样,第一个alert() 会执行foo函数还是foo变量那?
alert(foo); //打印函数2window.onload=function(){alert(foo);document.write(foo(200)); }function foo(x) { if (x > 100) { var tmp = x - 100; } return tmp;}var foo;
结果是:执行函数foo ,不管 var foo 变量跟foo(x)函数的位置如何互换。
那么是不是可以说,同级别相同名字的函数和变量同时声明,不管位置如何,函数都会覆盖变量?可以看到变量只声明,却没有赋值,如果为变量赋值的话 将上诉代码改成var foo =2;并与函数调换位置试验下,第一个alert()会怎么工作那,结果是照样打印函数内容。 代码如下:
<script type="text/javascript">alert(foo); <span style="font-family: Arial, Helvetica, sans-serif;">//打印函数</span>alert(foo(200)); //打印函数window.onload=function(){alert(foo);//打印变量document.write(foo(200)); //报错}var foo =2; //在这赋值 ,声明提升function foo(x) { if (x > 100) { var tmp = x - 100; } return tmp;}</script>如果改成这样
var foo =2;function foo(x) { if (x > 100) { var tmp = x - 100; } return tmp;}alert(foo)//打印2 因为函数飞升了;alert(foo(200)); //报错
alert只打印变量,函数总是报错。看来同名的函数和变量会有这么多需要注意的地方,实际编程就不要这样做了吧。
0 0
- js 变量 函数名的提升
- JS变量名和函数名的提升
- js的变量提升和函数提升
- js的变量提升和函数提升
- js 变量、函数提升
- 深入理解js的变量提升和函数提升
- 深入理解js的变量提升和函数提升
- 深入理解js的变量提升和函数提升
- JS中的函数提升及变量提升
- js中的变量提升和函数提升
- js变量提升 和函数提升
- js变量提升和函数提升
- js函数变量声明提升
- JS变量和函数提升
- JS面试中的的变量提升和函数声明
- JS中变量和函数的提升机制(hoisting)
- JS变量名、函数名,区分大小写
- 关于js 的变量提升
- CentOS虚拟机设置静态ip
- 【Oracle篇】Oracle的服务
- cocostudio3.5帧动画
- Cordys 流程启动与结束调用了哪些WebService
- Log4j —— 初步了解和使用
- js 变量 函数名的提升
- 《Orange'S:一个操作系统的实现》学习笔记---开发环境搭建
- 正确的解决GridLayout在安卓4.0以下版本中兼容问题
- LeetCode Multiply Strings
- php的入门第一个例子(包括linux的环境安装与包括页面跳转,以及curl命令的调用)
- 2015.6.24 XJOI T1.不可视境界线
- MacBook 连接Centos服务器
- Linux虚拟机与外面系统ping不通,或者连不上网
- 各种排序算法的分析及java实现