javascript函数作用域学习示例(js作用域)
时间:2024-04-17 10:10:29
在一些类似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
}
标签:js作用域,函数作用域
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
windows下安装make及使用makefile文件
2023-05-08 07:50:53
![](https://img.aspxhome.com/file/2023/2/115772_0s.png)
巧用Dreamweaver4文件库更新网站
2007-02-03 11:31:00
![](https://img.aspxhome.com/file/UploadPic/20072/200723113133681s.gif)
Python 实现某个功能每隔一段时间被执行一次的功能方法
2021-11-14 09:57:25
详解python eval函数的妙用
2021-12-23 10:56:05
asp日期函数运用--生成简单的日历
2008-08-15 13:47:00
![](https://img.aspxhome.com/file/UploadPic/20088/15/2008815134819595s.gif)
python 微信好友特征数据分析及可视化
2021-09-10 15:45:20
![](https://img.aspxhome.com/file/2023/1/131021_0s.png)
HTML转义字符&npsp;表示non-breaking space \\xa0
2022-07-11 05:55:35
![](https://img.aspxhome.com/file/2023/9/132479_0s.png)
关于DOM元素定位属性的深入学习
2008-04-02 11:46:00
python去除文件中空格、Tab及回车的方法
2021-12-04 22:25:44
Docker安装MySQL8的方法步骤
2024-01-21 12:26:40
Python关键字及可变参数*args,**kw原理解析
2023-08-25 06:41:47
django inspectdb 操作已有数据库数据的使用步骤
2024-01-24 00:16:50
![](https://img.aspxhome.com/file/2023/5/110015_0s.png)
Access数据库导入Mysql的方法之一
2023-11-17 12:41:41
asp获取文件md5值
2008-10-13 09:10:00
Python包资源下载路径报404解决方案
2021-01-22 15:38:35
![](https://img.aspxhome.com/file/2023/4/76744_0s.png)
MHA实现mysql主从数据库手动切换的方法
2024-01-25 22:36:23
脚本测试postman快速导出python接口测试过程示例
2022-11-03 09:28:10
![](https://img.aspxhome.com/file/2023/8/78698_0s.png)
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2022-08-16 16:42:00
![](https://img.aspxhome.com/file/2023/0/98930_0s.png)
学习createTrackbar的使用方法及步骤
2021-07-29 20:02:52
![](https://img.aspxhome.com/file/2023/7/121387_0s.jpg)
Python实现孤立随机森林算法的示例代码
2021-11-25 14:38:24
![](https://img.aspxhome.com/file/2023/6/131346_0s.jpg)