JavaScript函数
- 函数的基本使用
- return返回语句
- arguments的使用
- 函数的两个案例
- 作用域
函数的基本使用
1.函数声明
格式:
function 函数名(){
函数体代码
}
function是声明函数的关键字,必须小写
2.函数调用
函数名();
- 调用的时候不要忘记加小括号
- 函数如果不调用,自己是不会执行的
- 声明函数本身并不会执行代码,只有调用函数时才会执行函数体代码
例如:
//函数声明
function hello() {
console.log('hello,world');
}
//函数调用
hello();
3.形参和实参
在声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,从而在调用函数时同样也需要传递相应的参数,这些参数被称为实参。
//函数声明
function getSum(num1, num2) {
console.log(num1 + num2);
}
//函数调用
getSum(1, 2);
//结果为3
return返回语句
- 函数最终的结果需要返回给函数的调用者,通过return实现
- 实参是一个数组,那么形参接收到的也会是一个数组
- return只会返回一个值,以最后一个值为准,如果想要返回多个值,可以返回数组
//不执行return之后的语句
function getresult() {
return 'sy';
alert('hello');//不会被弹出警示框
}
//return只返回一个值,以最后一个值为准
function returnresult(num1, num2) {
return num1, num2;//只返回num2
}
//return想要返回多个值,可以使用数组
function returnmore(num1, num2) {
return [num1 + num2, num1 - num2, num1 * num2 , num1 /num2];
}
console.log(getresult());
console.log(returnresult(10,2));
console.log(returnmore(10,2));
结果:
- 如果函数没有return,则返回undefined
arguments的使用
当我们不确定有多少个参数传递时,可以使用arguments来获取。arguments展示形式是一个伪数组,因此可以进行遍历,伪数组具有以下特点:
- 具有length属性
- 按索引方式存储数据
- 不具有数组的push、pop等方法
例如:
function fn(){
for(var i = 0; i <arguments.length; i++){
console.log(arguments[i]);
}
}
fn(1 , 2 , 3);
fn(1, 2, 3, 4, 5);
//数组存储了所有传递过来的实参,不需要在定义形参的个数
函数也可以调用另外一个函数
function fun1(){
console.log(11);
fun2();
}
function fun2(){
console.log(22);
}
fun1();//结果为11,22
函数的两个案例
1.翻转任意数组
尽量多使用arr.length 这种方法继续数组赋值,这样的好处是数组的长度是可以变化的,并且少一层for循环
2.数组的冒泡排序
作用域
1.全局作用域
整个script标签或者一个单独的js文件都可以使用
2.局部作用域
在函数内部就是局部作用域,这个代码的名字只能在函数内部起效果或者作用
3.全局变量
在全局作用域下声明的变量称为全局变量(函数体外定义的变量)
- 全局变量在代码的任何位置都可以使用
- 在全局作用域下var声明的变量是全局变量
- 如果定义变量没有加上var,不管是变量定义在函数里面还是函数外面都是全局变量
4.局部变量
- 局部变量只能在函数内部使用
- 在函数内部var声明的变量就是局部变量
- 函数的形参实际上就是局部变量
例如:
var num = 10;//全局变量
function fn(aru){
var num1 = 20;//局部变量
num2 = 30;
}
fn();
console.log(num);//结果为10
console.log(num2);//结果为30,因为num2未设置var,也是全局变量
console.log(num1);//报错: num1 is not defined,因为num1是局部变量