函数/实参/形参
函数的分类
- 匿名函数: 没有名字的函数 匿名函数不能独立存在
- 有名/具名函数: 有名字的函数
匿名函数的使用例子,通过事件触发
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
document.onclick = function(){
console.log("这是一个依赖于document点击事件的函数");
}
</script>
</body>
</html>
有名函数的例子,下面的代码就把上面的一些代码省略,直接写js代码啦
function fn(){
console.log("fn函数调用成功");
}
fn(); //打印出fn函数调用成功
有名函数和将函数赋值给一个变量的区别
//直接使用function声明变量
function fn(){
console.log("fn有名函数");
}
fn(); //函数执行
//fn是一个变量,代表函数本身
let fn2 = function(){
console.log("fn2函数调用成功");
}
把函数放到数组里面的例子:
let arr = [function(){
console.log("arr里的fn");
}]
arr[0](); //打印arr里的fn
把函数放到对象里面的例子:
let obj = {
a : function(){
console.log("obj里的a函数");
}
}
obj.a(); //打印obj里的a函数
###函数声明
//函数声明,直接使用function来声明的,不可以加括号自执行 必须通过函数名()执行
function fn(){
console.log(1);
}
函数表达式
//函数表达式 可以加括号执行性
let fn2 = function(){
console.log("fn2函数");
}
函数形参/实参
-
可以根据调用环境的不同 做出不同的反馈
-
函数的参数的目的就是为了和外部通信
-
形参个数多于实参的个数,也就是形参没有找到对应的实参接受,那么它就是undfined
-
形参个数少于实参的个数,也就是做人知足,不要贪心,没有形参接收的话,多出来的就不要啦
function fn(a,b){//形式参数
console.log("fn执行");
console.log(a+b);
}
fn(1,2); //括号里面的参数是实际参数,简称实参
fn(3,5); //可以通过传入不同的实参,达到实现不同的效果
fn(6,8);
b有默认值,当有实参对应的时候,就不会生效
b的默认值什么时候生效?
底层检测默认值生效的机制,是如果b接收到一个undfined的参数,默认值就会生效
没有默认值的,放在前面,有默认值放到后面
function fn(a =1,b){//形式参数
console.log(a);
}
fn(undfined,2); //设置默认值
fn(,2); //会报错
属性要依附在对象下面
function fn(){}
fn.index = 123;
console.log(fn.index);
//访问一个对象不存在的属性,默认是undfined
.操作符 ===> []
let obj = {
a: 1,
b: 2
}
//let a = "b";
console.log(obj[a]);
let arr = ["a","b"]
console.log(arr.0); //报错,因为数字跟小数点结合,会被认为是小数
console.log(arr[0]);
//直接带.,相当于属性,没带.视为变量
每一个对象,系统自带的属性:合法的对象属性
####自定义属性和自定义标签属性
- 自定义属性 ,人为制定的,寄存在js对象下面叫自定义属性
- 自定义标签属性,放在标签里面的,不能直接通过点去获取
自定义标签属性的获取
console.log(box.fy);
//自定义标签属性不能直接通过点去访问
//获取自定义标签属性
console.log(box.getAttribute("fy"));
console.log(box.getAttribute("fy","这是一个新的值"));
console.log(box.removeAttribute("fy"));
return
在函数执行结束,默认返回 undfined
函数里只能有一个return 遇到return就停止运行,并且把return后面的值返回出来
function fn(a,b){
let result = a + b;
return result;
}
let num = fn(1,2);//函数执行的结果
console.log(num);
可以通过下面的方法,简化书写的代码
function getId(str){
return document.getElementById(str);
}
let div = getId("box");
小Tips:
- 不能带括号,因为js里面,一个变量后面有括号,都是函数,函数一旦加() 就是调用(执行函数) 自执行
- 不能这样写
document.onclick = fn()
,直接的话,就是函数自执行,不是时间触发的