变量提升

  • 在当前作用域中声明的变量,会将变量提升到作用域顶部。
  • 声明提升 值不提升 【undefined】
  • 在当前域使用变量时,看当前使用时变量是否赋值

例子

  var v = 'hello';
    function fun(){
        console.log(v);  // 使用变量v 当前处于 已定义 为赋值
        var a = 'world'
        // return 23;
    }
    fun() //undefined
    // console.log(a);   //报错 a is not define
    // 变量未定义: xxx  is  not define
        // undefined  表示变量已经定义 在执行当前【使用变量】时,处于【未赋值】状态

    // 因为变量a已经声明 所以变量声明会提升到作用域顶部
    // 又因为 当前使用变量a没有赋值 
    // 所以打印出 undefined  没有赋值

// console.log(a);
var a;
var c = fun
console.log(c);   //这个时候输出的是fun函数

var d = fun();
console.log(d);   //undefined
 //这个时候返回undefined  因为函数没有返回值 相当于变量没有被赋值
//   或者我的理解就是 函数没有返回值 为undefined 将undefined赋给d 所以返回undefined
  • 注意:if 语句 和for循环中的变量也是全局的 只有函数体中的是局部的,没有var 的变量是全局的
  • 在函数中没有var变量的时候那个变量是全局的
    变量的使用规则:
    1:先在自己的作用域中找 ——>有直接使用 无看2
    2:再去父域中找 ----> 有 使用 无看3
    3:继续往上层域中找,直到全局域位置 —> 有 用 无 报错 — xxx is not define
    变量查找方式:
    • 1:先看声明,再看赋值,赋值使用就近原则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值