标签:引入 进度 另一个 赋值 标记 不用 声明 原因 not
域表示的就是 范围, 即 作用范围. 就是一个名字在什么地方可以被使用, 什么时候不能使用.
即块级别的作用范围
// 在 C , Java 等编程语言中, 下面的语法报错 { var num = 123; // int { console.log( num ); // => 123 } } console.log( num ); // 报错
所谓的 词法( 代码 )作用域, 就是代码在编写过程中体现出来的作用范围. 代码一旦写好, 不用执行,
作用范围就已经确定好了. 这个就是所谓词法作用域.
在 js 中词法作用域规则:
可以发现只有函数可以制造作用域结构. 那么只要是代码, 至少有一个作用域, 即全局作用域.
凡是代码中有函数, 那么这个函数就构成另一个作用域. 如果函数中还有函数, 那么再这个作用域中就
又可以诞生一个作用域. 那么将这样的所有的作用域列出来, 可以有一个结构: 函数内指向函数外的链式结构.
绘制作用域链的步骤:
变量的访问规则
如何分析代码
var num = 123; function f1() { console.log( num ); } function f2() { var num = 456; f1(); } f2();
下面的代码的错误
function foo () { var i1 = 1 // 局部 i2 = 2, // 全局 i3 = 3; // 全局 }
4.此时注意
var arr = []; for ( var i = 0; i < 10; i++ ) { arr.push( i ); } for ( var i = 0; i < 10; i++ ) { console.log( arr[ i ] ); } // 一般都是将变量的声明全部放到开始的位置, 避免出现因为提升而造成的错误 var arr = [], i = 0; for ( i=0; i < 10; i++ ) { arr.push( i ); } for ( i = 0; i < 10; i++ ) { console.log( arr[ i ] ); }
标签:引入 进度 另一个 赋值 标记 不用 声明 原因 not
原文地址:http://www.cnblogs.com/ballyalex/p/7300888.html