定义:使用函数作为参数或者将函数做为返回值
//定义一个函数//作为参数的函数let a=()=>console.log("作为参数的函数调用了");//需要调用的函数function demo(f){f();console.log("demo函数调用");return ()=>console.log("返回的函数调用了");}// 调用函数demo(a)();

定义:函数的名字作为另外一个函数的参数传入,叫做回调函数
function hello(){console.log("作为参数的函数调用了");}function demo(f){f();console.log("demo函数调用");}demo(a);//回调函数
function hello(){console.log("作为参数的函数调用了");}function demo(){hello();console.log("demo函数调用");}demo();//这只是在一个参数内调用另一个参数
定义:将一个函数的多个参数,分多次传入,每次传入都返回一个函数已来接受多个参数,循环往复,直到接受完所有的参数
//常规函数接收多个参数function sum(a,b,c,d,e){return a+b+c+d;}//利用偏函数,这里以每次接受两个为例let sum_1 = function(a,b){return function(c,d){return a+b+c+d;}}console.log(sum_1(10,20)(30,40));//上述例子利用箭头函数简化let sum_2 =(a,b)=>(c,d)=>a+b+c+d;console.log( sum_2(10,20)(30,40));
定义:将函数的参数传入时,每次只能传入一个参数,也就是特殊的偏函数
sum =function sum(a){return function(b){return function(c){return function(d){return a+b+c+d;}}}}console.log(sum(10)(20)(30)(40));//箭头函数sum_1 = a => b=>c => d => a+b+c+d;console.log(sum_1(10)(20)(30)(40));
定义:函数内部只是用形参,不使用函数外的参数
let [a,b,c,d]=[10,20,30,40];//这个纯函数function sum(a1,b1){console.log(a1+b1);}sum(a,b);//这个不是纯函数,这个是用来了函数外部的变量function sum_1(a1,b1){console.log(a1+b1+d);}sum_1(a,b);
let a =10;let b =a;console.log(a,b);a = 20;console.log(a,b);
//与上面的例题进行对比,一道迷惑的题目var a = [1,2,3];var b = a;a = [4,5,6];alert(b);
看完下面可能有所了解:
let a=[10,20,30,40];let b=a;//将a的地址赋值给b,引用传递console.log(a,b); //[10,20,30,40] [10,20,30,40]let c=[10,20,30,40];let d=c;c = [10,30];//将c指向了[10,30]所在的地址console.log(c,d);//c:[10,30] d:[10,20,30,40]let e =[10,20,30,40];let f =e;e.pop();console.log(e,f);//e,f:[10,20,30]
let obj1 ={name:"张三",age:18};// 访问方式console.log(obj1.name,obj1.age);console.log("%o",obj1);//引用传递let obj2 =obj1;console.log("%o",obj2);//{name: "张三", age: 18}obj1.name="王五";console.log("%o",obj1);//{name: "王五", age: 18}console.log(obj1 === obj2);//true
传参永远都是值传递
let a =10;function sum(abc){console.log(abc);abc=20;console.log(abc);}sum(a);// 10 20console.log(a);//10
注意:
// 深拷贝: 值传递// 浅拷贝: 引用传递
1.模板字符串语法
编写字符串时,通常使用 ( ' )或者 ( " )const str1 ='hello world';const str2 ="hello world";使用模板字符串的语法是:const str3 =`hello world`;
2.字符串拼接
普通字符串:var p = {name: 'Alfred',nn: 'Alfy',};console.log('Hi, I\'m ' + p.name + '! Call me "' + p.nn + '".');模板字符串写法可以直接使用 ${value} 嵌入表达式:console.log(`Hi, I'm ${p.name}! Call me "${p.nn}".`);
3.换行
普通字符串:console.log("Dear Mom,\n" +"Hope you are well.\n" +"\tLove, your son");模板字符串:console.log(`Dear Mom,Hope you are well.Love, your son`);
第一个参数是被嵌入表达式分隔的文本的数组。
第二个参数开始是嵌入表达式的内容。
例1.let a = 1;let b = 2;function tagFunction(strings, aVal, bVal, sumVal) {console.log(strings);console.log(aVal);console.log(bVal);console.log(sumVal);return 'hahah';}let tag = tagFunction`${a} + ${b} = ${a+b}`;// ['', "+", "=", ''],标签函数接收的参数依次是原始字符串数组,每个表达式求值的结果// 1// 2// 3console.log(tag); // hahah例2.function hello(a){console.log("hee"+a);}hello("宁皓");hello`宁皓`;
//多次赋值let [a,b,c]=[10,20,30];console.log(a);//10console.log(b);//20console.log(c);//30//两个值交换[a,b]=[b,a];console.log(a);//20console.log(b);//10
//对象解构let item={name:"李四",age:15};let {name,age}=item;console.log(name);console.log(age);
let person ={name:"张三",age:18,getInfo:function(){return `${this.name} : ${this.age}`;}};let {name,age} =person;// console.log(name,age);//属性与变量保持一致时,属性直接简化let one={name,age,getInfo:function(){return `${this.name} : ${this.age}`;}};//对象的方法进行简化,删除:function()let two={name,age,getInfo(){return `${this.name} : ${this.age}`;}};
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号