var str; //这个属于变量声明str = "hhh"; //这个属于变量定义另var str2="fff";这样的其实是两个过程,可以看成var str2;str2="fff";而变量声明是会被提升的意即someCode();var str2;str2="fff";这样的其实真实顺序是var str2;someCode();str2="fff";下面写个证据function someCode(){ console.log(str2);
}
someCode();var str2="fff";以上代码运行后显示undefined而不是报错,如果没有变量提升则肯定会报str2 is not defined