Javascript的变量作用域

原来以为javascrip的变量是申明后生效

但是javascript的变量作用域是函数级别的

例子如下

var global = "test";

function testvar () {
    console.log(global);
    var global = "data";
}

testvar();

 在执行以上例子的时候最终输出的内容为undifined; 

 从这个例子中得出变量的作用域是函数级别的,也就说不管你在函数的第几行声明变量,作用域都是整个函数体。

 这个例子的代码相当于

var global = "test";

function testvar () {
    var global; //未初始化
    console.log(global);
    global = "data";
}

testvar();

 因此良好的编程习惯是所有的变量初始化都需要写在函数的开头。

 再看一个例子

for(var i = 0; i < 10; i++) ;
console.log(i);

 

 最后代码显示的内容是9,也就是说i这个变量的作用域是函数级而不是块级的。

 

posted @ 2017-09-26 17:32  spchenjie  阅读(132)  评论(0)    收藏  举报