javascript的函数作用域


Posted in Javascript onNovember 12, 2014

在一些类似c语言的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明他们的代码段之外是不可见的,我们称为块级作用域(block scope),而javascript中没有块级作用域。取而代之的javascript使用的是函数作用域(function scope):变量在声明它的函数体以及这个函数体嵌套的任意函数体内都是有定义的。 在如下代码中,在不同位置定义的i,j和k,他们再同一个作用域内都是有定义的

function text(o)   

{   

    var i=0;   

    alert(typeof o);   

    if(typeof o == "string")   

    {   

        var j=0;   

        for(var k=0;k<10;k++)   

        {   

            alert(k);//输出0-9   

        }   

        alert(k);//输出10   

    }   

    alert(j);//输出0   

}  

  javascript的函数作用域指在函数内部声明的所有的变量在函数体内始终是可见的。有意思的是,这意味着变量在声明之前甚至已经可用。javascript的这个特性被非正式的称为声明提前(hoisting),即javascript的函数体内声明的所有的变量(不涉及赋值)都被“提前”至函数体的顶部。看以下代码

var global="globas";   

function globals()   

{   

    alert(global);//undefined   

    var global="hello QDao";   

    alert(global);//hello QDao   

} 

由于函数作用域的特性,局部变量在整个函数体始终是有定义的,也就是说在函数体内部变量遮盖了同名的全局变量。尽管如此在程序执行到var语句的时候,局部变量才会被真正的赋值,因此,上述过程等价于:将函数内的变量声明“提前”至函数体顶部,同事变量初始化留在原来的位置:

var global="globas";   

function globals()   

{   

  

       var global;   

    alert(global);//undefined   

    global="hello QDao";   

    alert(global);//hello QDao   

} 

Javascript 相关文章推荐
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
同时使用n个window onload加载实例介绍
Apr 25 Javascript
js中运算符&amp;&amp; 和 || 的使用记录
Aug 21 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
Aug 25 Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 Javascript
JS实现仿新浪黄色经典滑动门效果代码
Sep 27 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
Jul 20 Javascript
在 Vue 项目中引入 tinymce 富文本编辑器的完整代码
May 04 Javascript
jQuery实现的导航条点击后高亮显示功能示例
Mar 04 jQuery
js实现数字从零慢慢增加到指定数字示例
Nov 07 Javascript
Vue基于localStorage存储信息代码实例
Nov 16 Javascript
JS数组的常用方法整理
Mar 31 Javascript
浅析javascript的间隔调用和延时调用
Nov 12 #Javascript
jQuery的deferred对象详解
Nov 12 #Javascript
探寻Javascript执行效率问题
Nov 12 #Javascript
推荐8款jQuery轻量级树形Tree插件
Nov 12 #Javascript
推荐10个2014年最佳的jQuery视频插件
Nov 12 #Javascript
JavaScript中提前声明变量或函数例子
Nov 12 #Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
Nov 12 #Javascript
You might like
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
深入array multisort排序原理的详解
2013/06/18 PHP
YII动态模型(动态表名)支持分析
2016/03/29 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
JavaScript Eval 函数使用
2010/03/23 Javascript
jQuery调用WebService的实现代码
2011/06/19 Javascript
jquery判断小数点两位和自动删除小数两位后的数字
2014/03/19 Javascript
javascript实现页面滚屏效果
2017/01/17 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
2019/09/26 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
javascript实现前端input密码输入强度验证
2020/06/24 Javascript
python格式化字符串实例总结
2014/09/28 Python
python搜索指定目录的方法
2015/04/29 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Python制作词云图代码实例
2019/09/09 Python
python设置代理和添加镜像源的方法
2020/02/14 Python
python 实现单例模式的5种方法
2020/09/23 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
求职信怎么写
2014/05/23 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年应急工作总结
2014/12/11 职场文书
辞职书格式样本
2015/02/26 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python