夜光序言:
喜欢你 就会在想起你时微笑 至于你是否明白我微笑的原因 我一点也不在意 就像风很舒服时我也微笑 太阳很舒服时我也微笑 而风和太阳就跟你一样 不会明白我微笑的原因 我怎么对待风和太阳我就怎么对待你......
正文:
函数申明Black King |
Function[函数]
函数:由事件驱动的或者当它被调用时执行的可重复使用的代码块
来调用就可以了,重复使用好多次 联想:四大发明中印刷术
函数就像印刷术
函数的申明
函数使用和变量一样,需要申明
1:自定义函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//function //等价于var
function fun() {
alert("我是已定义函数");
}
fun(); //函数不调用,自己不执行 【关键】
</script>
</body>
</html>
2:函数直接量申明
var fun1=function(){
alert("直接量申明")
};
fun1();
3:Function 关键字来申明
var fun2=new Function("var a=10; var b=21 ; alert(a+b)");
fun2();
函数不调用就不执行
变量提升夜光 |
经典面试题:
<script>
f1();
console.log(c);
console.log(b);
console.log(a);
function f1(){
var a=b=c=9;
console.log(a);
console.log(b);
console.log(c);
}
</script>
// 面试题f1();先执行这个 输出999
//b c全局变量 99
//a 局部变量 undefined
<script>
var num=10;
fun();
function fun(){
console.log(num);
var num=20;
}
</script>
//输出undefined
什么是变量提升:
function fun(){
console.log(num);
var num=20;
}
等同于:
function fun(){
var num; // 没有赋值 所以 为undefined
console.log(num);
num=20;
}
在函数体内部,申明变量,会把该申明提升到函数体的最顶端,只提升变量声明,不赋值
var a=18;
f1();
function f1(){
var b=9;
console.log(a);
console.log(b);
var a="123";
}
// 联想面试真题
var b=9; //局部变量
变量提升的原理:等同于下面这个:
function f1(){
var b=9;
var a; //a没有赋值 undefined
console.log(a);
console.log(b);
a="123";
}
console.log(b); //输出123
检测参数个数匹配夜光 |
<script>
function fn(a,b) { //a,b 形参
console.log(a+b);
}
fn(1,2); //实参
</script>
<script>
function fn(a,b) { //a,b 形参
console.log(a+b);
}
fn(1,2); //实参
fn(5); // 这个怎么搞 嘿嘿 一个数字+NaN = NaN 输出NaN
fn(1,1,1); //输出2,第三个1没有要 所以输出2
//学过其他java语言 形参实参必须匹配
</script>
Arguments 存储了函数传送过来的实参
<script>
function fn(a,b){
console.log(fn.length); //得到的是 函数的形参的个数
}
fn(1,2);
</script>
//得到的是 函数的形参的个数为2
<script>
function fn(a,b){ //形参
console.log(fn.length); //得到的是 函数的形参的个数
console.log(arguments); //输出[1,2] 实参 接手过来 实参
console.log(arguments.length); //得到的是 函数的实参的个数
}
fn(1,2); //实参
</script>