函数:
- 关键字:
argument:只在函数内部起作用,并且永远**指向当前函数调用者传入的所有参数**;也就是说,即使函数不定义任何参数还是可以拿到参数的值,似于array,但绝对不是array.
最常用法:判断传入的参数个数。
// foo(a[, b], c)
// 接收2~3个参数,b是可选参数,如果只传2个参数,b默认为null:
function foo(a, b, c) {
if (arguments.length === 2) {
// 实际拿到的参数是a和b,c为undefined
c = b; // 把b赋给c
b = null; // b变为默认值
}
}
rest: 为了获取除已定义的之外的参数,引入了rest,如果传入的参数不足,rest会接收一个空数组(注意不是undefined
)
用法:写在参数的最后面,前面用...
标识。
this:
在方法内部,this是一个特殊的关键字,始终指向当前对象
2. 作用域:
全局变量: var
变量: let 为块级作用域
常量: const 为块级作用域
- 解构赋值:即,可以同时对多个变量进行赋值。
var [x,y,z] = ['0','hello','ES6']
// x,y,z 分别被赋值为数组对应的元素。
数组本身有嵌套时,也可以进行解构赋值,但注意嵌套层次与位置要一致。
var [x,[y,z]] = ['0],['hello','ES6']
同时也可以忽略某些元素var [,, z] = ['0],['hello','ES6']
具体可查看廖雪峰官网中的js教程作用域与解构赋值。