作者:910621rh_270 | 来源:互联网 | 2023-01-16 12:27
函数申明必须有函数名{代码}函数申明如果呈现在表达式的地位,则被转化为函数表达式{代码}函数申明会晋升{代码}函数表达式函数名可选{代码}命名的函数表达式,函数名在内部是有效的,只能在函数外部应用。面试题{代码}函数表达式不存在变量晋升实参和形参函数的实参个数arguments.length;函数
函数申明
function func(){}
函数申明如果呈现在表达式的地位,则被转化为函数表达式
// 圆括号(分组操作符)内只能是表达式
(function foo() {});
// 在数组只能是表达式
[function bar() {}];
// 逗号也只能操作表达式
1, function baz() {};
const obj = {
aa: function Inner() {
return '123'
}()
}
console.log(obj);
func();
function func(){}
函数表达式
const func = function(){}
const func2 = function Inner(){
console.log(Inner);
}
console.log(Inner);
命名的函数表达式,函数名在内部是有效的,只能在函数外部应用。
面试题
var a = 100;
if (function b() { }) {
a += typeof (b);
}
console.log(a);
实参和形参
- 函数的实参个数 arguments.length;
- 函数的形参个数 funcName.length;
function Test(a){
console.log(arguments.length, '实参');
console.log(Test.length, '形参');
}
Test(1,2)
实参 arguments[0],形参 a,尽管它们的存储地位是不同的,然而它们是一一隐射关系,一一映射的要害,是须要实参传值,如果不传值,则无奈建设关系,有一一映射关系时,批改形参时,实参也会被批改,否则不会。
function Test(a){
a =100;
console.log(arguments);
}
Test(1,2)
function Test(a,b){
b =100;
console.log(arguments[1]);
}
Test(1)
- 形参的默认值是 undefined
-
当实参为undefined,则取值形参;当形参为undefined,则取值实参;当都为undefiend,则为 undefined
function Test(a,b){
console.log(a,b);
}
// 下面的代码等于上面的代码
function Test(a=undefined,b=undefined){
console.log(a,b);
}
Test(1,2)
function Test1(a = 10,b){
console.log(a,b);
}
Test1(undefined,2)