首页 > 编程语言 > 详细

javascript作用域

时间:2014-12-07 02:01:20      阅读:296      评论:0      收藏:0      [点我收藏+]

javascript作用域

<html>
 <script type="text/javascript">
 /*作用域
 在js中,函数嵌套是非常普遍的,在函数嵌套中,
 对变量是如何寻找的?
 答:首先在函数内部寻找,如果需找不到,则在外层寻找。
 直到……全局(window)区域.从里往外寻找
 */
  var c=5;
  function t1(){
   var d=6;
   function t2(){
    var e =7;
    alert(c+d+e);
   }
   t2();
  }
 //t1();//18
 function t3(){
   var d=6;
   function t2(){
    var e =7;
     d =3;
    alert(c+d+e);
   }
   t2();
  }
 //t3();//15
 /*声明变量,var的作用
 var 是在函数运行的上下文中,声明一个变量,
 如果不加var,则是一个赋值操作,
 但是不要狭隘的理解为声明了一个全局变量
 */
 //alert(window.d);
 //alert(window.e);
 function t(){
  d=5;//d没有加var,仅仅是一个赋值操作,寻找
  //t域内的函数,如果没找到,继续向外寻找……到window
  //如果window中还没有d,创建d变量并赋值
  var e=6;
 }
 //t();
 //alert(window.d);
 //alert(window.e);
 function  t4 (){
  var d;
  function t2(){
   d=5;
   e=6;
  }
  t2();
 }
 //t4();
 //alert(window.d);//undefined
 //alert(d);// d is not defined
 //alert(e);
 /*
 注意:以window.xxx引用全局变量,寻找不到,
 作为window的属性不存在,返回undefined。
 直接以xxx引用,寻找不到,则报xxx is not defined
 */
 
 var s1=‘g‘;
 function  t5(){
  alert(s1);//g
  alert(s2);//is not defined
  s2 = ‘lo‘;
 }
// t5();
 /*
 在t5中寻找s2,没有找到s2的变量声明,到window上寻找s2的变量声明,
 还是没有找到,报is not defined
 */
 
 function  t6(){
  alert(s1);//g
  alert(s2);//undefined
 var s2 = ‘lo‘;
 }
 t6();
 /*
  解释:
  js代码自上而下执行,但是js代码的整体运行分为:
  词法分析期和运行期
  自上而下执行之前,先有一个词法分析过程。
  词法分析t6函数:
  声明了s2变量,但是没有对s2赋值,只有在运行期才赋值
  因此s2=undefined。
  执行t6函数:
  alert(s1);//g
  alert(s2);//undefined
  s2 = ‘lo‘;
 */
 </script>
</html>

javascript作用域

原文:http://www.blogjava.net/yangjunwei/archive/2014/12/06/421128.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!