首页 > 代码库 > javascript中函数作用域和声明提前
javascript中函数作用域和声明提前
javascript不像java等其他强类型语句,没有块级作用域(括号内的代码都有自己的作用域,变量在声明它们的代码段之外不可见)一说,但有自己的独特地方,即函数作用域。
函数作用域:变量在声明它们的函数体内以及这个函数体的任意内部函数体内是有定义的。
如下所示代码,在不同位置定义了变量i、j和k,它们都在同一个作用域内,即在函数体内均是有定义的。
function test(){ var i=0; //i在整个函数体内均有定义 if(true){ var j=0; //j在整个函数体内均有定义 for(var k=0;k<10;k++){ //k在整个函数体内均有定义 console.log(k); //输出0~9 } console.log(k); //输出10 } console.log(j); //输出0}test();
声明提前:变量的声明(不包括赋值)都被提前至函数体顶部。
注意:声明提前是在javascript引擎的预编译时进行的,是在代码开始运行之前。
下面是有关代码及注释:
var i=1;function test(){ console.log(i); //输出undefined var i=2; console.log(i); //输出2}test();
上述代码可等价如下所示:
var i=1;function test(){ var i; console.log(i); //输出undefined i=2; console.log(i); //输出2}test();
javascript中函数作用域和声明提前
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。