您的位置:首页 > Web前端 > JavaScript

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

2015-06-10 23:08 609 查看
一、参数,也可以理解为表达式,参数在使用的时候相当于赋值

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循环的时候要特别小心,放到不同的位置,可能会是不同的值)

例如:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>

</head>

<body>

<input type="button" value="按钮1">
<input type="button" value="按钮2">
<input type="button" value="按钮3">

<script>

var aBtn = document.getElementsByTagName('input');

for( var i=0; i<aBtn.length;i++){

aBtn[i].onclick = function(){

//alert(i); // 返回 3;
//aBtn[i].style.background = 'blue'; // 此时点击按钮,不会有反应而且会报错,因为此时的i已经经过三次的自增,成为了3;而aBtn[3]则根本不存在;
for( var i=0; i<aBtn.length; i++){
aBtn[i].style.background = 'blue';
}

}

}
</script>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: