javascript函数作用域学习示例(js作用域)


Posted in Javascript onJanuary 13, 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 相关文章推荐
JQuery Ajax通过Handler访问外部XML数据的代码
Jun 01 Javascript
jquery删除指定子元素代码实例
Jan 13 Javascript
Js可拖拽放大的层拖动特效实现方法
Feb 25 Javascript
JS实现完全语义化的网页选项卡效果代码
Sep 15 Javascript
js编写的treeview使用方法
Nov 11 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
Dec 08 Javascript
整理关于Bootstrap警示框的慕课笔记
Mar 29 Javascript
JS+HTML5 FileReader对象用法示例
Apr 07 Javascript
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
vue使用ElementUI时导航栏默认展开功能的实现
Jul 04 Javascript
详解vue配置后台接口方式
Mar 29 Javascript
回顾Javascript React基础
Jun 15 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
Jan 13 #Javascript
鼠标经过tr时,改变tr当前背景颜色
Jan 13 #Javascript
js导航栏单击事件背景变换示例代码
Jan 13 #Javascript
JS文本获得焦点清除文本文字的示例代码
Jan 13 #Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
Jan 13 #Javascript
parentElement,srcElement的使用小结
Jan 13 #Javascript
javaScript中的this示例学习详解及工作原理
Jan 13 #Javascript
You might like
国内php原创论坛
2006/10/09 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
destoon设置自定义搜索的方法
2014/06/21 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
JS案例分享之金额小写转大写
2014/05/15 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
python基础教程之循环介绍
2014/08/29 Python
Python合并两个字典的常用方法与效率比较
2015/06/17 Python
Python基于回溯法子集树模板解决找零问题示例
2017/09/11 Python
Python自动化运维_文件内容差异对比分析
2017/12/13 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
python导入坐标点的具体操作
2019/05/10 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
JAVA程序员面试题
2012/10/03 面试题
初中高效课堂实施方案
2014/02/26 职场文书
霸王洗发水广告词
2014/03/14 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
媒体宣传策划方案
2014/05/25 职场文书
外国人来华邀请函
2015/01/31 职场文书
信访维稳承诺书
2015/05/04 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis