标签:
一、参数,也可以理解为表达式,参数在使用的时候相当于赋值
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>
标签:
原文地址:http://www.cnblogs.com/zhangxg/p/4567756.html