xxjoy 2019-06-26
一、函数作用域和提前声明
在一些C类语言的编程中,花括号内的每一段代码都有各自的作用域,而且变量在声明它们的代码段外是不可见的,我们称为块级作用域(block scope),Javascript采用的函数作用域(function scope):变量在声明的函数体内以及这个函数镶套的任意函数体内都是定义的。
function test(o){ If(typeof(o)=“object”){ for(var k=0;k<10;k++){ var j=0; console.log(k); //输出0~9的数字 } console.log(k);//输出9 } console.log(j);//输出0 }
说明:k,j在整个函数内都是有定义的,不仅仅在当前的代码段。因此在函数内声明的变量在整改函数内是可见的。
声明的变量具有提前可用javascript的这个特性被称为声明提前,即javascript函数声明的多有变量都被提前至函数的整体的顶部。
var scope=“global”; function test(){ console.log(scope); //输出的是undefined,局部变量在函数整个内部有作用的,造成提前声明造成未赋值 var scope=”local”; console.log(scope): //输出的值为local }