参数、作用域、的一些定义与注意点

函数:

参数:

在函数定义与调用时的形参个数与实参个数可以不等。

如果实参个数小于形参个数,则函数体调用执行时,未传递参数为 undefined。

如果实参个数大于形参个数,会忽略多于的参数。

arguments 对象:

用于函数体中,表示函数在调用时接收到的实际参数列表。

可以使用 arguments.length 来获取到实参个数,

使用编号 0 ~ (arguments.length - 1) 来获取到具体的某个参数:

arguments[0]

arguments[1]

求不确定个数的数字之和

实参个数:arguments.length

形参个数:函数名.length

返回值:

return 表达式;

在函数体中,使用 return 最多只能返回一个值。

在函数体中遇到 return 语句,表示结束函数的执行,当前函数体中还有未执行完的代码块,不再执行。

当直接执行 return; 时,表示函数的返回值为 undefined。如果函数中没有显式的调用 return 返回值,相当于函数的返回值也是 undefined。

跳转语句:

break;

continue;

return 表达式;

作用域:

作用范围

全局作用域:

定义在函数外部的变量,拥有全局作用域。意味着这个变量在所有函数中都可以使用到,并且所有函数都是共享这个变量的使用。

生命周期:变量定义到窗口关闭

局部作用域(函数级的作用域--var):

定义在函数内部的变量,拥有局部作用域。在函数外部不能直接调用到函数体内部定义的局部变量。

局部变量可以全局变量同名,函数体中优先使用局部变量。

函数中变量使用时,先在当前函数作用域下查找使用的局部变量,如果有直接使用,没有,再到父级作用域下查询局部变量,如果父级也没有,再到父级的父级继续查找(作用域链),直到找到或是到达全局作用域,如果在全局作用域中仍然找不到,报错。

生命周期:调用进入函数到函数调用结束

块级作用域:

ES3:IIFE(立即调用函数表达式--即匿名自执行函数)

ES6:let/const

let 声明的是块级作用域的变量

const 声明的是块级作用域的常量

生命周期:进入块到退出块

声明提升(预解析)

先将 var 、function 所定义的变量、函数声明部分提升到对应作用域的最顶部。

对于函数,声明的方式定义函数时,会将函数整体向作用域顶部提升,如果是函数表达式的书写方式,只提升变量声明部分,函数主体不提升。

你可能感兴趣的:(参数、作用域、的一些定义与注意点)