javaScript之变量提升

在平时开发过程中,我们都会遇到变量提升。

但却没有好好研究过,重视基础很重要!!!

一、变量

定义:变量是存储信息的容器。

特点:是松散类型的,也就是说可以用来保存任何类型的数据。

var turbo;
//未经初始化的变量,会保存一个特殊的值undefined;
console.log(turbo)  //undefined


function test(){
    var a = 2;
}
test();
console.log(a) //发生错误。
//在函数中定义变量,那么这个变量会在函数退出后就会被销毁。


function test1(){
    b = 7;
}
test1();
console.log(b)   //7
//省略了var操作符,b变成了全局变量。

二、变量提升

JavaScript 中,函数及变量的声明都将被提升到函数的最顶部。

1、变量提升

JavaScript 中,变量可以在使用后声明,也就是变量可以先使用再声明。

a = 1;
console.log(a);
var a ;

//这就是一个典型的变量提升。先使用 再声明。

JavaScript 只有声明的变量会提升,初始化的不会。

var a = 1;
console.log(a);  //1
//已经初始化  得到a为1

再来看另外一个例子:

console.log(a);
var a = 1;

得到结果:undefined


b=5;
console.log(b);
var b = 10;

得到结果:undefined

//以上例子证明:只有声明的变量会提升,初始化的不会。
 

注意:JavaScript 严格模式(strict mode)不允许使用未声明的变量。

2、函数提升

首先来看一个例子:

test();

function test(){
    console.log("a");
}

以上是一个简单的函数提升例子,在js预解析的时候,函数会被提升至最顶部,之后进行执行。

注意:使用匿名函数的方式不存在函数提升,因为函数名称使用变量表示的,只存在变量提升。

var test = function(){
    console.log("a");
}

function test(){
    console.log("b");
}

test();

得到结果:a;

//第一个test是一个变量,因此这个变量的声明也将提升到顶部,而变量的赋值依然保留在原来的位置。需要注意的是,函数优先,虽然函数声明和变量声明都会被提升,但是函数会首先被提升,然后才是变量。

平时不注意的同学可能会犯一个错误,下面来看看:

test();
var test = function(){
    console.log("a");
}

//结果:报错。

//为什么呢?
//其实这里是初始化了一个test变量。我们知道初始化不存在变量提升,所以这里会出问题。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值