标签:style color java 使用 io strong ar cti javascript
1.javascript中的作用域
正如其他语言一样,在javascript中,变量的作用域也有全局和局部作用域的划分。
2.全局作用域
1)所有在最外层定义(非函数体内定义)的变量拥有全局作用域
2)直接赋值的变量,自动默认为全局作用域
<span style="font-size:18px;"> <script>
//函数体外
var name = "第一个name"; //全局变量
sex = "女"; //全局变量,因为直接赋值操作
function test() {
//函数体内
age = 56; //全局变量,因为没有加关键字var
var name = "lucky";
}
alert(name);//返回第一个name
</script></span>
3)所有window对象的属性拥有全局作用域。例如window.name等
3.局部作用域
1)在函数体内部用var定义的变量,这里注意一下,只要在函数体内,无论在哪个地方,因为函数内涉及到嵌套函数,用var定义的变量就是局部变量,如果没有加关键字var的话,系统会自动默认为全局变量
<span style="font-size:18px;"> <script>
function test() {
var name = "lucky";//在函数体内,局部变量
alert(name);
}
test();//返回lucky
</script></span>
4.全局作用域和局部作用域的区别
1)我们知道所谓的作用域就好比穿衣服一样,是可以层层嵌套的,最外层的永远是全局作用域,因为别人都可以看到你穿在外面的衣服。下面来看一个小例子。
<span style="font-size:18px;"> <script>
var name = "名字"; //全局变量
var people = function () {
var name = "张三"; //局部变量
height = 1.8; //全局变量
alert(name); //显示张三
alert(window.name); //显示名字
}
people();
alert(height);//显示1.8
</script></span>
2)还是上述的例子,如果函数people中没有name这个变量,但是全局变量中有,又会发生什么变化呢?
<span style="font-size:18px;"> <script>
var name = "名字"; //全局变量
var people = function () {
height = 1.8; //全局变量
alert(name); //显示名字
alert(window.name); //显示名字
}
people();
alert(height);//显示1.8
</script></span>
解释:正如上述所说,作用域是层层嵌套的。当在javascript中寻找一个变量的时候,首先会从当前的作用域开始寻找,如果找到则停止;反之则从函数的外层继续寻找。在这个例子中先从people这个函数中寻找变量name;当没有找到的时候,转到外层作用域中寻找,此时name为“名字”
3)还是上述的例子,我么再略微的修改一下。还是从当前people函数的作用域查找,而people定义了该变量,但是还未到使用该变量,所以返回undifined。注意,在作用域内的变量,不管在函数的哪里声明,javascript都会在函数运行前在作用域中包含该对象。
<span style="font-size:18px;"> <script>
var name = "名字"; //全局变量
var people = function () {
height = 1.8; //全局变量
alert(name); //显示undifined
alert(window.name); //显示名字
var name = "张三"; //局部变量
}
people();
alert(height);//显示1.8
</script></span>
5.小结
看了上述的几个例子,不知各位有没有搞懂。简单的说,只要能够区分局部变量和全局变量就oK了,另外在javascript中查找变量的时候,是遵从从里向外的原则,就这么简单。
标签:style color java 使用 io strong ar cti javascript
原文地址:http://blog.csdn.net/luckyzhoustar/article/details/38781669