概念:JS中没有块级作用域这一概念,即在块语句中定义的变量,实际上是包含函数中而非语句中创建的:
function outputNumber(count){ for (var i = 0; i < count.length; i++) { alert(i); //1 2 3 4 5 }; alert(i); //5 }
//在这里i并不是只能在for语句中使用,而且在整个outputNumber()函数体内都能访问;
function outputNumber(){ (function(){ //这里创建了一个块级作用域 for (var i = 0; i < count; i++) { alert(i); } })(); alert(i);//出错了~这里的i已经变成私有变量,外面是无法访问的~ }