函数的声明与提升

2019-06-24  本文已影响0人  特立独行的兔子_web

JavaScript代码是从上而下执行的;那么,在前面使用了一个之后声明的变量会发生什么呢?
我们就来研究一下JavaScript中关于变量和函数的提升:

变量的提升:

  1. 变量的提升
    var定义:将声明的变量名提升至代码的最前面
    函数中声明的变量提升至函数内部最前面
    提前使用则打印undefined
console.log(a) // undefind
var a = 1;
console.log(a) // 1
  1. 全局变量概念
    没有提升,提前使用则报错 未定义
    在函数中定义全局变量,(函数执行后)可在函数外使用
console.log(a); // 报错
a = 1;
console.log(a); // 1
  1. 局部变量:在函数内部声明的变量,不可在函数外部使用
    就近原则,使用自己内部的变量

function fnName() {
   var a = 5;
   var f = 6;
   e = 'e';
   console.log(a); // 5
}
fnName();
console.log(e);  // 'e'
console.log(f); // 报错
  1. 全局变量:在全局下声明的变量,定义后,可在任何地方使用(涉及到提升)
    特殊的全局变量: window下的属性(未使用var)

函数的提升:

  1. 函数声明式
    function fnName() {
    console.log(1);
    }

整个函数体会全部提升:
函数名与变量名相同,则函数名权重会高
同名函数取最后一个同名函数

  1. 函数表达式
    var fnName2 = function () {
    console.log(2);
    }

按照变量的提升方式: undefined

  1. 函数重载:Js里面是没有重载
    JS中的函数没有重新载入的概念,而是以最后一个同名函数为基准;
上一篇下一篇

猜你喜欢

热点阅读