共计 1429 个字符,预计需要花费 4 分钟才能阅读完成。
一. 函数定义
- 用来封装你的重复性代码
- 在 Python 中定义函数使用 def 很关键字
- 在 js 中使用 function 定义函数
// 语法
function [函数名](形参 1, 形参 2, 形参 3...){[ 函数体代码];
}
- 无参函数
// 定义无参函数
function func1(){alert("Hello world");
}
// 调用
func1(); // "Hello world"
- 有参函数
// 定义有参函数
function func2(name,age){alert(name+" 年芳 "+age);
}
// 调用
func2(" 小女子 ",28); // " 小女子年芳 28"
func2(1,2,3,4) // "1 年芳 2 " (参数过多不要紧, 只会取出相应的数据)
func2(1) // "1 年芳 undefined" (参数少了也不要紧, 会以 undefined 填充)
二. 函数参数
- 参数一般五个以下
- 函数内引用的参数大于传入的参数会以 "undefined" 替代
- 函数内引用的参数小于传入的参数, 那么只会取出相应的参数
function cook(isBad,a,b,c){ // isbad 形式参数
if (isBad){alert('做饭');
}else{alert('点一个外卖');
}
}
var bad = false; // 刀坏了
cook(bad); // 点一个外卖
-
arguments 参数
能够获取到函数接受到的所有的参数
function alls(a,b,c,d){console.log(arguments);
}
alls(1,2,3) // [1,2,3]
三. 函数返回值与函数表达式
- 可以声明变量来接收函数返回值
// 加法
function addition(a,b){return a+b;}
// 减法
function subtraction(a,b){return a-b;}
// 乘法
function multiplication(a,b){return a*b;}
// 除法
function division(a,b){return a/b;}
// 调用
var r = addition(4,6); // 10
var r1 = subtraction(4,6); // -2
var r2 = multiplication(4,6); // 24
var r3 = division(4,6); // 0.666666666666
- 函数表达式
var division = function(a,b){return a/b;}
// 调用
division(10,2) // 5
四. 全局变量与局部变量
- 函数外部的属于全局,函数内部的属于局部,只能在函数里面调用, 函数运行完毕, 局部变量就会被删除
- 在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它
var a = 1;
console.log(a); // 1
function add(){
var b = 2;
console.log(b); // 2
}
add();
// 无法调用,b 只是局部
console.log(b); // 报错
五. 匿名函数
- 没有名字的函数
- 函数可以被赋值, 但对于一个匿名函数来说赋予名字没有意义
- 匿名函数一般与 map() 之类的函数组合使用
function(){console.log("xxx");
}
六. 作用域
- 首先在函数内部查找变量,找不到则到外层函数查找,逐步找到最外层。另外函数的作用域关系是在定义阶段就固定死的,与调用位置无关
七. 变量提升
- 所有的声明都会提升到作用域的最顶上去
- 同一个变量只会声明一次, 其他的被忽略掉
- 函数的声明优先级高于变量声明的优先级, 并且函数声明和函数定义的部分一起被提升
正文完