> 家居
js函数变量提升(js变量提升是什么意思)
导语:js变量/函数提升
var foo = function(x, y) {return x - y;}function foo(x, y) { return x + y;}var num = foo(1, 2);console.log(num);//输出结果:-1
解析:
//1,变量声明提升var foo//2,变量声明提升var num//3,函数提升:function foo(x, y) {// return x + y;//}//匿名函数,需要通过变量引用指向函数的运行结果var foo = function(x, y) {return x - y;}var num = foo(1, 2);console.log(num);//输出结果:-1
变量提升:
变量的提升是分两步的,第一步是变量【声明】的提升,第二步是变量的赋值
变量的提升,提升的其实是变量的【声明】,而不是变量的赋值
函数提升:
函数的提升是直接将整个函数整体提升到作用域的最开始位置,相当于剪切过去的样子。
顺序:
函数的提升后的位置是在变量提升后的位置之后的
function foo() { //先检测变量---变量提升:var a //检测函数----函数提升:function a() {} console.log(a); //执行输出:[Function: a] //变量赋值 a=1 var a = 1; console.log(a); //输出:1 //已提升至前面,相当于剪切 function a() {} console.log(a); //输出:1}foo();//结果:[Function: a]11
规则
1. 变量声明、函数声明都会被提升到作用域顶处;2. 当出现相同名称时,优先级为:变量声明, 函数声明 ,变量赋值
注意:只有声明的变量和函数才会进行提升,隐式全局变量不会提升。
function foo() { console.log(a);//ReferenceError: a is not defined}foo();
本文内容由快快网络小薇创作整理编辑!