关于函数
由于JavaScript允许传入任意个参数而不影响调用,因此传入的参数比定义的参数多也没有问题,虽然函数内部并不需要这些参数;
当然,传入的参数比定义的少也没问题
代码解析时,函数优先级最高,也就是预解析的优先级最高,如下面所示
foo(1)
function foo(x){
console.log(x)
}
foo可以在当前函数声明前的位置调用,(不是说函数不用声明就能调用!!还是要声明的,只是说可以将函数调用提前),因为在预解析时,会自动将function声明提升到代码最顶部
因此也存在一点问题,就是如果重复声明了一个函数,那么它将会被最新声明的函数所覆盖,示例如下
foo1(2);
function foo1(x){
console.log(x+1)
}
function foo1(x){
console.log(x+2)
}
function foo1(x){
console.log(x+3)
}
function foo1(x){
console.log(x+4)
}
对吧,输出的就是6,也就是x=2 x+4=6
前面几个同名函数都被最后那个给覆盖了
进阶