码迷,mamicode.com
首页 > Web开发 > 详细

作用域2—JS学习笔记2015-6-10(第54天)

时间:2015-06-11 00:12:07      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

一、参数,也可以理解为表达式,参数在使用的时候相当于赋值

var a=1;

function fn1(a){  // 这里的参数a 相当于:var a = 1;  a由未定义,变成1,这里的变量是局部变量,与外面的var a=1;是不同的;

  alert(a); // 1 这里是局部变量;

  a=2;

}

fn1(a);

alert(a); // 1   因为这里的a还是访问到全局变量;

 

 

// 想要获取函数内的值:

方法一:通过作用域链,反向获取;全局变量;

var str = ‘‘;
function fn1(){

  var a=‘大鸡腿~‘;
  str = a;

}
fn1();
alert(str); // 此时str的值就是a;

 

方法二:通过参数传递;

function fn2(){

var a=‘自由~‘;
fn3(a);

}
fn2();
function fn3(a){ // 这里的a 不是上面的a,也可以是b,c...用来接收函数的传递
alert(a);
}

 

 

二:if判断,for循环不是作用域,与函数不一样,但使用时候要特别小心;

先解析,后执行,才是作用域的标志;因此函数是一个作用域;但if,for等大括号就不是一个作用域了;

处于兼容性考虑,在想定义全局变量,或者全局函数的时候,请放到if,for等外面去;

 

for里面的function不要直接使用已经定义的变量 i,否则会有隐患的(提示我们在使用for循环的时候要特别小心,放到不同的位置,可能会是不同的值)

例如:

 1 <!DOCTYPE HTML>
 2 <html>
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 5 <title>无标题文档</title>
 6 
 7 
 8 
 9 </head>
10 
11 <body>
12 
13 <input type="button" value="按钮1">
14 <input type="button" value="按钮2">
15 <input type="button" value="按钮3">
16 
17 <script>
18 
19 var aBtn = document.getElementsByTagName(input);
20 
21 for( var i=0; i<aBtn.length;i++){
22 
23   aBtn[i].onclick = function(){
24       
25      //alert(i); // 返回 3;
26        //aBtn[i].style.background = ‘blue‘; // 此时点击按钮,不会有反应而且会报错,因为此时的i已经经过三次的自增,成为了3;而aBtn[3]则根本不存在;
27      for( var i=0; i<aBtn.length; i++){
28            aBtn[i].style.background = blue;
29      }
30 
31   }
32 
33 }
34 </script>
35 </body>
36 </html>

 

作用域2—JS学习笔记2015-6-10(第54天)

标签:

原文地址:http://www.cnblogs.com/zhangxg/p/4567756.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!