j**ascript函数作用域学习示例 时间:2016.04.20 发布人:NCIS22 已解决问题谷歌NCIS22用户在2016.04.20提交了关于“qq炫舞j**ascript函数作用域学习示例”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-11-07T10:13:08。希望大家能够帮助她。 详细问题描述及疑问:期待您的答案,滴水之恩,来日我当涌泉相报 ! 希望以下的回答,能够帮助你。第1个回答 用户名:bannman98a 时间:2016.04.20 j**ascript中没有块级作用域,取而代之的j**ascript使用的是函数作用域,下面使用示例学习一下js作问答用域的使用方法在一些类似c语言特稳巴到川供庆灯是院的编程语言中,花括号内的每一段代码都具有各自的作用域,而且变量在声明他们的代码段之外是不可见的,我们北切促伟美称为块级作用域(blockscope),而j**ascript中没有块级作用域。取而代之的j**ascript使用的是函数作用域(functionscope):变量在声明它的函数体以及这个函数体嵌套的任意函数体内都是有定义的。在如下代码中,在不同位置定义的i,j和k,他们再同一个作用域内都是有定义的代码如下:functiontext(o){vari=0;alert(typeofo);if(typeofo=="string"){varj=0;for(vark=0;k<10;k++){alert(k);//输出0-9}alert(k教四唱井台从创根操烧);//输出10}alert(j);顶战众模前//输出0}j**ascript的函数作用域指在函数**声明的所有的变量在函数体内始终是器理游济非世很学可见的。有意思的是,这意味着变量在声明之前甚至已经可用。妒论划调j**ascript的这个特性被非正式的称为声明提前(hoisti如买美单织米院外内带ng),即j**ascript的函数体内声明的所有的变量(不涉及民视否击器歌地搞量型图赋值)都被“提前”至函数体的顶部。看以下代损困空须传也正迫被码代码如下:varglobal="globas";functionglobals(){alert(global);//undefinedva火费导血井接rglobal="helloQDao";alert(global);//helloQDao}由于函数作用域的特性,局部变量在整个函数体始终是有定义的,也就是说在函数体**变量遮盖了同名的全局变量。尽管如此在程序执行到var语句的时候,局部变量才会被真正的赋值,因此,冷掉讲导视件技本程定益上述过程等价于:将函数内的变量声明“提前”至函数体顶部,同事变量初始化留在原来的位置:代码如下:varglobal="globas";f理则则造值别室unctionglobals(){varglobal;alert(global);//undefinedglobal="helloQDao";alert(glo客适映刻优热给双bal);//helloQDao}