【JavaScript】(5)匿名函数的定义方式、变量的作用域(局部变量,全局变量)

时间:2021-07-31 19:13:43
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JavaScript语言基础---函数细节</title>
</head>
<body>
<input type="button" onclick="demo(); " value="执行函数" >
<input type="button" onclick="demo2(); " value="执行函数2" >
<input type="button" onclick="demo3(); " value="执行函数3" >

<script type="text/javascript">
//1、函数的空返回值
function hello(){
alert("hello ! ");
}
function demo(){
alert( hello );//【结果:输出函数对象hello的toString()--也就是函数定义的特征串】
alert( hello() );/*【结果:①hello()函数正常执行--弹出“helo ! ”
②hello()函数返回值类型为空,alert( .toString() );
此时结果为undefined 】*/

}
</script>

<script type="text/javascript">
//2、匿名函数
/*2.1匿名函数过渡:
----【结论:】由此例得,函数引用abc可以由整个函数体代替,可以写成匿名的格式:
var add=function(a,b){ return a+b; }; */

function abc(a,b){
return a+b;
}
var add=abc;//函数对象的引用赋值
function demo2(){
alert( add(1,2) );
alert( add(10,20) );
}
</script>

<script type="text/javascript">
/*2.2、匿名函数的使用演示:
---- 【注意:】以后我们对页面组件的事件赋予动作时,通常采用匿名函数的方式赋*/

function demo3(){
var btn1=document.getElementsByTagName("input")[0];//获取第一个按钮对象
btn1.onclick=function(){
alert("okok....");
};
}
</script>

<script type="text/javascript">
/*3、变量的作用域1:
----【结论:全局变量】在js中,一个变量定义之后,它的作用域不是一大括号来区分的,
不但在本段脚本有效,而且在整个页面的脚本片段中都是有效的,此概念叫全局变量。
*/

for(var i=0;i<10;i++){
document.write("i= "+i+"&nbsp;&nbsp;");
}
document.write("脚本1:i= "+i+"&nbsp;&nbsp;");//【结果:】10;能够访问上面for内部声明的变量
</script>

<script type="text/javascript">
document.write("脚本2:i= "+i+"&nbsp;&nbsp;");//【结果:】10;能够访问其他脚本中的变量
</script>

<script type="text/javascript">
/*3、变量的作用域2:
----【结论:局部变量】在函数中定义的变量是局部变量,在函数外部是不能访问的。
----【注意:一个细节】一个变量若声明但没有赋值,它的值是undefined(由js默认帮我们初始化)
如果一个变量没有定义就使用,语法是挂的。*/

function show(){
var x=6;
x++;
};
document.write("x= "+x+"<br/>;");//WA:因为x变量没有定义,函数中定义的是局部变量,在这里访问不到。
</script>

<script type="text/javascript">
/*3、变量的作用域3:
----【结论:形参是局部变量,实参是全局变量,作用域不同,形参不改变实参的值】
*/

var y=2;//全局变量
function change(y){//形参【注意】形参y是局部变量,它的改变不会影响后边的实参。
y=y+1;
alert(y);//3
}
change(y);//实参
document.write("y= "+y);//2
</script>
</body>
</html>