词法作用域

词法作用域

作用域

域表示的就是 范围, 即 作用范围. 就是一个名字在什么地方可以被使用, 什么时候不能使用.

块级作用域

即块级别的作用范围

	// 在 C , Java 等编程语言中, 下面的语法报错
	{
		var num = 123;  // int 
		{
			console.log( num ); // => 123
		}
	}
	console.log( num ); // 报错

在 js 中采用词法作用域

所谓的 词法( 代码 )作用域, 就是代码在编写过程中体现出来的作用范围. 代码一旦写好, 不用执行,
作用范围就已经确定好了. 这个就是所谓词法作用域.

在 js 中词法作用域规则:

  1. 函数允许访问函数外的数据.
  2. 整个代码结构中只有函数可以限定作用域.
  3. 作用规则首先使用提升规则分析
  4. 如果当前作用规则中有名字了, 就不考虑外面的名字

例子1:

	var num = 123;
	function foo() {
		console.log( num );
	}
	foo();

例子2:

	if ( false ) {
		var num = 123;
	}
	console.log( num ); // undefiend

例子3:

	var num = 123;
	function foo() {
		var num = 456;
		function func() {
			console.log( num );
		}
		func();
	}
	foo();
posted @ 2016-08-06 00:03  Sora.孙  阅读(124)  评论(0编辑  收藏  举报