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 相关文章推荐
使用按钮控制以何种方式打开新窗口的属性介绍
Dec 17 Javascript
常用的几段javascript代码分享
Mar 25 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
微信小程序 教程之wxapp 视图容器 view
Oct 19 Javascript
JavaScript实现二维坐标点排序效果
Jul 18 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 Javascript
详解JS中统计函数执行次数与执行时间
Sep 04 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
Nov 28 Javascript
简单了解node npm cnpm的具体使用方法
Feb 27 Javascript
微信用户访问小程序的登录过程详解
Sep 20 Javascript
浅析JavaScript 函数防抖和节流
Jul 13 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 print EOF实现方法
2009/05/21 PHP
PHP学习 变量使用总结
2011/03/24 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
Laravel 5 框架入门(四)完结篇
2015/04/09 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
PHP get_html_translation_table()函数用法讲解
2019/02/16 PHP
PHP封装XML和JSON格式数据接口操作示例
2019/03/06 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
简要了解jQuery移动web开发的响应式布局设计
2015/12/04 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
Python中获取对象信息的方法
2015/04/27 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
Python预测2020高考分数和录取情况
2020/07/08 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
python通过函数名调用函数的几种方法总结
2021/06/07 Python
Python基本知识点总结
2022/04/07 Python
Nginx反向代理、重定向
2022/04/13 Servers