变量提升是由于javascript的语言特性决定的,所以要规范我们对javascript语言的书写。
/*
javascript是弱类型、解释型的脚本语言。
一般javascript引擎对js先解释,再执行。
在解释过程中,会将所有的声明提升到文
件最开始,再逐行执行。因此就有了变量
提升,分两种:变量提升、函数提升。
*/
/*
变量提升指的是变量在未被赋值之前就进行调用,
只会对变量进行声明,而不会进行赋值,即undefined
*/
console.log(a);
var a = 'hello world';
console.log(a);
/*
javascript中函数的创建一般有两种方式:
1.函数声明式:会提升到文件的最开始
2.函数字面量式:不会发生函数提升
*/
console.log('--这里是声明式函数--');
console.log(foo);
console.log('--这里是字面量式函数--');
console.log(foo1);
function foo(){
}
var foo1 = function(){
}
执行结果如下: