函数:
- 概念:封装一段可以被重复执行调用的代码块
- 目的:让大量代码可以被重复使用
- 使用:
函数表达式()
//1.声明函数
var fun = function(形参1,...){
函数体
}
//2.调用函数
fun(实参1,...)
- 简单函数体
//1.声明函数
function 函数名() {
函数体
}
//2.调用函数
函数名()
- 带参数的函数体
//1.声明函数
function 函数名(形参1,形参2,...) {
函数体
}
//2.调用函数
函数名(实参1,实参2,...)
// 形参和实参个数相等,一一对应
// 实参个数多于形参,从前取对应的形参
// 实参个数少于形参,多余的形参定义为undefined
- 有返回值的函数体
// 声明函数
function 函数名(){
...
return 返回值;
}
// 调用函数
var re=函数名(); // 此时调用函数就可以得到函数体内return 后面的值,在实际开发里,一般用一个变量来接受函数的返回值
console.log(re) //可以通过控制台知道返回值
//return只能返回一个值,并且只返回最后一个数
//若要返回多个值,可以封装在数组里
注意:
函数都是有返回值的
如果有return 则返回 return 后面的值
如果没有return 则返回 undefined
- 例子
//1.声明函数
function getSum() {
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i
}
console.log(sum);
}
//2.调用函数
getSum()
//1.声明函数
function getSum(num1, num2) {
console.log(num1 + num2);
}
//2.调用函数
getSum(2, 3)
//1.声明函数
function getRe(num1, num2) {
return [num1 + num2, num1 - num2, num1 * num2, num1 / num2]
}
//2.调用函数
var re = getRe(88, 4)
console.log(re);
Arguments:
-
只有函数才有arguments对象,而且是每个函数都内置了这个arguments
-
arguments展示形式是一个伪数组,接受调用函数时所传递的实参
- 具有 length 属性
- 按索引方式储存数据
- 不具有数组的 push , pop 等方法
作用域
全局作用域
局部作用域
块级作用域:js在es6中才新增的
if(3<5){
var num==5
//num在{}里声明的,以外的区域访问不到
}
作用域链:采取就近原则的方式来查找变量最终的值。
function f1() {
var num = 123;
function f2() {
console.log( num );
}
f2();
}
var num = 456;
f1(); //123
全局变量与局部变量
全局变量:
- 在全局作用域下 var 声明的变量 是全局变量
- 特殊情况下,在函数内不使用 var 声明的变量也是全局变量(不建议使用)
局部变量
- 在函数内部 var 声明的变量是局部变量
- 函数的形参实际上就是局部变量