定义
1.有参无返回值
2.
3.
4.
function 函数名(参数列表){
函数体;
}
arguments
代表函数中实际传递的参数
定义方式二
var 函数名= function(){
}
函数的声明方式三 很麻烦
var sum =new Function(“a”,“b”,“函数体”);
函数的覆盖
function sum(a,b){
return a+b;
}
function sum(a,b){
return a-b;
}
当有一个函数声明了俩,后面声明的会覆盖掉先生命的
作用域
**全局变量:**函数外部声明或者以 没有var数据类型的方式在方法中声明。
**局部变量:**函数内部声明,且使用var数据类型关键字修饰
Javascript执行环境
js是先构建环境,在去执行代码。
1.检查所有的全局变量和函数。将全局变量和函数定义好在执行代码
2.遇到函数在构建环境,检查函数中的局部变量及函数中的函数一律搭完环境。
<script>
var a=0;
function fun1() {
alert("fun1.a:"+a);
var a=8;
}
fun1();
</script>
- 执行以上代码。
- 先搭配环境 一个全局变量a=0,一个函数fun1().
- 搭配fun1()环境,内部有局部变量a,覆盖掉 a=0;此时a未定义。搭配环境不是给变量赋值。
- 需要在执行代码时给其赋值。
<script>
function fun1 () {
alert("fun1.a:"+a);
fun2 ();
var a=8;
function fun2(){
alert("fun2.a:"+a);
}
}
fun1();
</script>
以上代码执行结果是未定义。
fun1() fun2()在执行代码时,都没有对变量a进行赋值操作。
当 var a=8;写在fun(2);上;结果是 未定义 8
- 先搭配全局变量和函数的环境后执行代码;遇到函数再去搭配函数的环境。
js执行环境中,函数内的同名参数对全局变量的影响、
<script>
a=10;
function fun1(){
alert("fun1.a:"+a);
fun2();
var a=8;
function fun2(){
alert("fun2.a"+a);
}
}
fun1();
</script>
**函数内的局部变量在搭建环境时,把全局变量覆盖掉了 在执行代码时,未定义其值。为默认值undified.**
JS搭配执行环境,方法内定义的的全局变量不会覆盖调之前的全局变量声明
```go
<script>
a=10;
function fun1(){
alert("fun1.a:"+a);
fun2();
a=8;// 此时a是全局变量,不会对外面的同名全局变量进行覆盖
function fun2(){
alert("fun2.a"+a);
}
}
fun1();
</script>
执行结果都是10