javascript函数作用域学习示例(js作用域)
2018-10-12 14:06
344 查看
在一些类似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作用域)
- JS学习之闭包、this关键字、预解释、作用域综合
- Ferris教程学习笔记:js示例2.3 用循环将三个DIV变成红色
- 轻松学习JavaScript四:JS点击灯泡来点亮或熄灭这盏灯的网页特效映射出JS在HTML中作用
- Vue.js 学习示例
- Ferris教程学习笔记:js示例2.12 简易选项卡
- 深入学习js之浅谈作用域(RHS和LHS)
- 示例学习-树形菜单的形成---使用vue.js
- JS 面试知识学习历程(第三天) -- 作用域和闭包
- Ferris教程学习笔记:js示例2.6 百度输入法
- Ferris教程学习笔记:js示例2.16 鼠标移过,改变图片路径
- 从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
- 学习笔记(3)关于Js的enevt.cancelBubble的作用
- Ferris这个教程学习笔记:js示例2.2:函数接收参数并弹出
- js高程第四章 变量、作用域和内存问题------学习笔记
- Vue.js学习示例分享
- node.js学习之断言assert的使用示例
- Ferris教程学习笔记:js示例2.17 复选框(checkbox)全选/全不选/反选
- 作用域—JS学习笔记2015-6-9(第53天)
- Ferris教程学习笔记:js示例5.7 自定义右键菜单,请在页面点击右键查看效果。