1、变量提高javascript
变量提高:在当前做用于中,js代码自上而下执行以前,浏览器会把全部带var/function关键字进行提早声明或定义。带var的关键字只是提早声明一下,带function的关键字在变量提高阶段把定义和声明都完成了。java
console.log(global);
// undefined
var
global =
'global'
;
console.log(global);
// global
function
fn () {
console.log(a);
// undefined
var
=
'aaa'
;
console.log(a);
// aaa
}
fn();
之因此会是以上的打印结果,是因为js的变量提高,实际上上面的代码是按照如下来执行的:浏览器
var
global;
// 变量提高,全局做用域范围内,此时只是声明,并无赋值
console.log(global);
// undefined
global =
'global'
;
// 此时才赋值
console.log(global);
// 打印出global
function
fn () {
var
a;
// 变量提高,函数做用域范围内
console.log(a);
a =
'abc'
;
console.log(a);
}
fn();
var nums = 99; yu() function yu(){ console.log(nums) //undefined 变量提高 yu函数里的声明至关于var nums; console.log(nums);nums=78 var nums = 78; }
2、函数提高函数
js中建立函数有两种方式:函数声明式和函数字面量式。只有函数声明才存在函数提高!如:spa
console.log(f1);
// function f1() {}
console.log(f2);
// undefined
function
f1() {}
var
f2 =
function
() {}
只因此会有以上的打印结果,是因为js中的函数提高致使代码其实是按照如下来执行的:code
function
f1() {}
// 函数提高,整个代码块提高到文件的最开始<br> console.log(f1);
console.log(f2);
var
f2 =
function
() {}
结语:在函数与变量之间,函数首先会被提高,而后才是变量。blog
第一次写博客,写的不怎么好,继续努力。ip