arguements与变量作用域
arguements的使用
function getSum(){var s = 0;for(var i = 0,j = arguements.length; i < j; i++){s += arguemengts[i];}console.log(s)}getSum(3,4)//求3+4
用于当前函数的参数,不固定数量时。
arguements.callee // 当前函数arguements.callee.name // 当前函数名字arguements.callee.caller // 调用当前函数的外部函数
arguements是一个arguements对象。
变量作用域
被定义在函数内部的变量,使用范围仅在函数内部。
并且当前函数执行完以后,这个变量会被销毁。
下次函数在执行时会重新定义这个变量,并且变量不能被保存在函数执行后还能使用。
函数内部变量优先局部变量
在局部作用域内(a+window.a)在ES6中被禁止。
如果当前函数内没有定义与全局变量相同的值,则可以调用全局变量,当在作用域中定义变量,则遵照局部优先原则。
当打印变量早于定义该局部变量之前,仍然遵照局部变量优先原则。
在函数中只要看到使用 var 定义的变量,这个变量就一定是局部变量,就一定会被优先。
当在函数中设置了参数,就相当于这个参数是被 var 定义好的局部变量。