标签:date published ret div ack cer exchange 重要 top
javascript学习日记
变量的作用域是往往是人们轻易忽略而又至关重要的问题,尤其是在javascript中。
javascript中变量的作用域有以下特点:
下面来看一个具体示例:
var global =1; function f(){ var local = 2; global++; return global; } alert(f()) ;//2 alert(f()) ;//3 alert(window.local);//undefined代码中可以看出声明一个全局变量global 和一个局部变量local;
而函数f()可以访问外面的全局变量global;
但是在函数f()外 局部变量local是不存在的
很显然函数内的代码可以像访问局部变量那样访问全局变量,
反之则不行
2 函数作用域的声明提前问题
先来看如下代码:
var scope ="global"; function f(){ alert(scope);//undefined var scope ="local"; alert(scope);//local } f();很显然第一个弹出框并没有如我所想弹出的global而是undefined
这是为什么呢?
其实由于函数作用域特性
函数域始终优于全局域
同名的局部变量会覆盖掉全局变量
而第一次调用alert的时候scope还没正式定义 所以为undefined
以上代码可以理解为:
function f(){ var scope; alert(scope); var scope ="local"; alert(scope); }; f(); //等价与函数内变量的声明‘提前‘至函数体顶部@XiaoNine 2016-11-20 10:14 字数 阅读 8
标签:date published ret div ack cer exchange 重要 top
原文地址:http://www.cnblogs.com/ALazyPig/p/6082171.html