Javascript语言的模块化

Javascript语言的模块化

一、         javascript模块化的层次:语法作用域

 

javascript的语法作用域有四种

1、  表达式

2、  语句和批语句

If()…else…

For()…

Do...while()

While()…

With()…

Switch(){…}//必须加大括号

Try{} //必须加大括号

Catch(){…}//必须加大括号

Finally{…}//必须加大括号

3、  函数

4、  全局

 

这些作用域之间只存在平行和嵌套的关系。如下规则

1、  相同级别的语法作用域可以相互嵌套

2、  高级别的语法作用域能够包含低级别的语法作用域

3、  低级别的语法作用域不能包含高级别的语法作用域。由于不存在包含关系,因此语言实现时,一般处理成语法上的违规,或者理解成“平行”关系。

 

 

二、         javascript模块化的效果:变量作用域

 

变量作用域又叫变量的可见性。有四种级别

1、  表达式

2、  语句(javascript没有语句级别的变量作用域)

3、  函数(局部作用域)

4、  全局

 

变量作用域的次序问题

1、  一些语言(如cc++,java)变量只能先声明才能访问。以下代码在c中编译就通不过,在js中却可以

Function fun() {

  If(bool) {

      Alert(bool);

}

Var bool = true;

}

2、  Js则可以先访问再显示声明,是没有次序限制的。因为显示声明总是在代码执行之前,就被引擎理解了。

 

变量的生存周期,创建和销毁

1、  创建:引擎做语法分析,发现显示声明时或引擎执行代码;发现写一个未被创建的变量时。

2、  销毁:引擎执行到函数结束将清除函数内未被引用的变量;引擎执行到全局代码块终结或引擎卸载和重载人时,将清除全局的变量和数据的引用。

3、  所以js中变量生存周期只有两个,函数的局部执行期间和函数外的引擎的全局执行期间。这是由于js引擎在实现“函数”这个机制时采用的方法。

4、  变量作用域讨论的是“在形式上这个变量能在哪个范围内娶到”,变量的生存周期讨论的是“在实现中什么时候创建和释放一个变量”

 

注意:

1、  语法作用域不等于变量作用域

2、  变量的可见性受限于它所在的语法结构的(语法)作用域

3、  在全局范围内任意说明变量,尤其使用for循环时声明变量不可取

4、  在函数内部不使用var声明变量不可取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值