搜索
写经验 领红包
 > 家居

js函数变量提升(js变量提升是什么意思)

导语: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();

本文内容由快快网络小薇创作整理编辑!