《精通javascript》读书笔记
2.1.3作用域
所有的面向对象编程语言都有某种形式的作用域,在c#里面作用域可以由块(block)划分,比如:
while,if或for语句中间。
但在javascript里,作用域(scope),十分特别。它是是由函数(function)划分的,而不是由块(block)划分的。
让我们来看看几个简单的例子,好加深对javascript作用域的认识:大家先不慌看答案,可以先判断一下执行结果是true还是false。
例子1:
0 var foo="全局区域定义的值"
1 if(true)
2 {
3 var foo = "块区域内定义的值";
4 }
5 alert(foo=="全局区域定义的值");
例子1结论:
本段代码当中,foo在第1行定义为全局变量并赋值,块区域(1-4行)执行过后,在块区域内,又出现一个新的foo变量,它究竟是全局变量那个变量foo,还是一个只是在块作用域内有效的新的一个变量foo呢?我们先不做结论,把foo在块内重新赋值为“块作用域内定义的值”,再说,
在第5行,我们来对比一下全局变量foo原来的值和现在的值是否相等。就知道答案了。
结果是:foo==“全局作用域定义的值”的值为false,即是说:foo的值为“块作用域内定义的值”。
这说明,foo在块区域内被重新赋值了,全局变量foo在块区域内是有效的,这说明javascript没有“块作用域”的概念吧!
浙公网安备 33010602011771号