函数声明
JavaScript函数定义时,会先扫描整个函数体的语句,把所有声明的变量“提升”到函数顶部;
"use strict";
function func() {
var x = 'Hello, ' + y;
console.log(x);
var y = 'World!';
}
func();
输出结果为:
Hello, undefined
在这里JavaScript引擎自动提升了变量y声明,但是不会提升y的赋值。
在函数内部定义变量时,需严格遵守“在函数内部首先声明所有变量”的原则,常见的做法是用一个var声明函数内部需要用到的所有变量。
appply、call函数
要指定函数的this指向哪个对象,可以使用函数本身apply方法,它接收两个参数,第一个参数是需要绑定的this变量,第二个参数是Array,表示函数本身的参数。
另一个与apply()类似的方法是call(),唯一区别是:
- apply()把参数打包成Array再传入;
- call()把参数按顺序传入。
对普通函数调用,通常把this绑定为null。