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 相关文章推荐
json简单介绍
Jun 10 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
May 12 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
Nov 03 Javascript
JQuery导航菜单选择特效
Apr 11 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
Feb 10 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
Jun 26 Javascript
详解webpack中的hash、chunkhash、contenthash区别
Jan 05 Javascript
详解Vue取消eslint语法限制
Aug 04 Javascript
webpack4 SCSS提取和懒加载的示例
Sep 03 Javascript
JS实现移动端点击按钮复制文本内容
Jul 28 Javascript
解决layui 表单元素radio不显示渲染的问题
Sep 04 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
Feb 07 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+SQL 注入攻击的技术实现以及预防办法
2010/12/29 PHP
php array的学习笔记
2012/05/16 PHP
PHP三元运算的2种写法代码实例
2014/05/12 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
部署PHP时的4个配置修改说明
2015/10/19 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
php常用字符函数实例小结
2016/12/29 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
利用Python开发微信支付的注意事项
2016/08/19 Python
Python调用C++程序的方法详解
2017/01/24 Python
python 将字符串转换成字典dict的各种方式总结
2018/03/23 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
对numpy中向量式三目运算符详解
2018/10/31 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
css3闪亮进度条效果实现思路及代码
2013/04/17 HTML / CSS
奥地利汽车配件店:Pkwteile.at
2017/03/10 全球购物
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
房屋继承公证书
2014/04/10 职场文书
三月雷锋月活动总结
2014/07/03 职场文书
五四演讲稿范文
2014/09/03 职场文书
交通事故死亡赔偿协议书
2014/12/03 职场文书
班主任工作总结范文
2015/08/13 职场文书