函数基础
1.函数重复调用,可以传递不同得参数到函数内部,函数重复调用时与之前调用的函数毫无关系
2.函数返回值,通过return实现;
return 返回值||(或)返回结果;
问:返回的结果返回到了哪里? 返回函数名调用的位置 函数名()
3.通过return 可以将函数内部的值返回到函数外部
4.return 会打断程序进行,跳出函数内部执行代码:=>(之后)就不再执行往下的代码;
5.没有设置return 默认返回undefined
<script>
// let a = 10;
// let c = 100;
// let e = 50;
// function add(q,q1) {
// let s = q + q1
// // 110 150 还要拿它 乘以 10
// return q + q1;
// }
// let x=add(a,c)//函数名调用位置
// console.log(x,"第一");
// let xx=add(c,e)
// console.log(xx,"第二");
// console.log("......")
function qaq(q,q1) {
console.log(2);
return q+q1;//此处说明return的跳出功能
let s=10;
console.log(1);
// return q+q1;
}
qaq(1,2)
</script>
2.argument函数(本人这里理解不够)
1.函数arguments 接收所有的实参数据,本质是一个数组(类数组),
2.箭头表达式()=>{}
箭头函数是函数的简写
箭头函数没有arguments 通过...代替
...变量名 需要在接收未知的最后面,作用:接收所有剩余的实参数据
3.简写
花括号去掉就相当于只有一句return 的语法
箭头函数一句语法,简化为
let result=(a,b)=> a+b;
console.log(add(1,2),"箭头函数");
<script>
// let arr=["小冯", "iu", "lisa", "美女","1213"]
// function add(a,b){
// console.log(arguments[0],a,b);
// console.log(arguments[1]);
// console.log(arguments[2]);
// console.log(arguments[3]);
// }
// add("小冯", "iu", "lisa", "美女","1213")
//箭头函数
let ss =(qwe,...p)=>{
console.log(qwe,q);
}
ss(1,2,2,3);
//简化
function add(a,b){
let s=10;
return a+b;
}
console.log(add(1,2),"函数声明函数");
//花括号去掉就相当于只有一句的return的语法
//箭头函数一句语法,简化为
let result =(q,w)=> q+w;
console.log(add(1,2),"箭头函数");
let obj={
name:"小冯",
remove:function(){
console.log(1);
}
}
obj.remove()
//对象函数简写
let obj1={
name:"小冯",
remove(){
console.log("简写函数对象");
},
remove1:()=>{
console.log("箭头函数");
},
}
console.log(obj1.remove1());
</script>
3.window 浏览器最大对象
函数内部定义的变量 外部是无法使用的,函数内部可以使用外部变量(抽象:比如集合包含)
作用域:只能在指定的区域内使用;
1.script是一个全局作用域;在这个作用域下的变量,函数在script标签内的任意位置都可以使用
a.页面打开时创建变量||函数,页面关闭时销毁
b.页面有一个全局变量对象:window,然后函数,变量最终挂截到window上
2.函数局部作用域;=>每个函数都有一个局部作用域{};局部变量&&函数,只能在自己内部使用,
可以套娃(也许是封装)
a.挂载在函数上?
3.块级作用域:ES6新增{let const 声明变量之后,这个{}就会变成块级作用域}
与函数局部作用域一致
<script>
// let asd = 10
// function add(q,q1) {
// // 函数生存圈
// function a() {
// console.log("a函数执行");
// function c() {
// console.log("c",asd);
// }
// c()
// }
// a()
// console.log("add函数执行");
// };
// add()
// let a = 10;
// function aaaa() {
// console.log(window);
// };
// aaaa()
{
let a = 10;
}
for (let index = 0; index < 2; index++) {
let aa = 10;
}
console.log(aa);
</script>
4.作用域
1.let const function 名称不要重复
2.若重复定义函数名,则执行重复函数名最后一个
3.从上往下执行
4.同一(作用域)只能声明一个相同的变量名,
5.作用域变量查找规则:自己有用自己的,自己没有往上找,以此类推类型知道找到window为止,window没有那就报错
<script>
// let a = 1; // 全局作用域
// function cc() {
// // 局部作用域
// let a = 10
// console.log(a,"cc函数"); //
// function aa(){
// console.log(a,"aa函数"); //
// }
// aa()
// }
// cc()
// console.log(a,"全局");
// let a = 10;
// function cc() {
// let a = 123;
// return 100
// }
// console.log(a,"全局1"); // 10
// a = cc()
// console.log(a,"全局2"); // 100
/*
go 全局 待补充
a: 2
f1:()=>{}
f2:()=>{}
f3:()=>{}
*/
let a = 1
let f1 = function () {
console.log(a) // 1
}
let f2 = function () {
let a = 2
console.log(a) // 2
f1()
}
let f3 = function (a) {
console.log(a) // 3
a = 3
console.log(a) // 4
}
a = 2
f1()
f3(4)
// 2 4 3
</script>