当前位置: 首页 > Web前端 > JavaScript

学习笔记——函数声明和函数表达式

时间:2023-03-27 15:26:38 JavaScript

函数声明必须有函数名functionfunc(){}如果函数声明出现在表达式的位置,会被转成函数表达式//括号(分组运算符)只能是一个表达式(functionfoo(){});//在一个数组中只能是一个表达式[functionbar(){}];//逗号只能作用于表达式1,functionbaz(){};constobj={aa:functionInner(){return'123'}()}console.log(obj);函数声明将提升func();functionfunc(){}函数表达式函数名optionalconstfunc=function(){}constfunc2=functionInner(){console.log(Inner);}console.log(Inner);命名函数表达式,函数名在外部无效,只能在函数内部使用。面试题vara=100;if(functionb(){}){a+=typeof(b);}console.log(a);函数表达式不存在变量提升了函数实参和形参的个数arguments.length;函数funcName.length的形参个数;functionTest(a){console.log(arguments.length,'实参');console.log(Test.length,'formalparameter');}Test(1,2)实参arguments[0],形参a,虽然它们的存储位置不同,但是是一对一的隐含关系,一对一映射的关键是需要传递实参的值,如果不传递值,则无法建立关系。当存在一对一的映射关系时,修改形参时,实参也会被修改,反之则不会。函数测试(a){a=100;console.log(arguments);}Test(1,2)functionTest(a,b){b=100;console.log(arguments[1]);}Test(1)形参的默认值未定义。当实参未定义时,取值参数;当形参未定义时,取值作为实参;当两者都未定义时,则未定义(a,b);}//上面的代码等同于下面的代码functionTest(a=undefined,b=undefined){console.log(a,b);}Test(1,2)函数Test1(a=10,b){console.log(a,b);}Test1(undefined,2)