码迷,mamicode.com
首页 > 其他好文 > 详细

变量提升、函数提升

时间:2018-02-27 21:31:54      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:nbsp   pre   执行函数   function   变量   bsp   执行   blog   声明   

一、变量提升

  ES5中没有块作用域,只有全局作用域、函数作用域。

// 不声明定义变量
console.log(name)  //报错,变量没有定义

// 变量提升
console.log(info) // undefined,不报错
var info = "hello";

function fun(){
    console.log(a) // undefined,不报错
    var a = ‘world‘
console.log(a) // world }
fun();

之所以出现这种情况,是因为变量提升导致的;上述过程相当于:

var info; // 先声明变量,没有赋值

// 不声明定义变量
console.log(name)  //报错,变量没有定义声明

// 变量提升
console.log(info) // undefined,不报错
info = "hello";

function fun(){
    var a; // 声明变量,没有赋值
    console.log(a) // undefined,不报错
    a = ‘world‘
    console.log(a) // world 
}
fun();

 

二、函数提升

  创建函数有两种方式:函数声明、函数表达式;只有在“函数声明”方式中,函数才会提升。

  函数提升:执行函数代码时,先执行函数声明;

// 只有函数声明形式才会函数提升
sayHello(); // 不会报错,正常执行

function sayHello(){
     console.log("hello !")  
}

fun(); // 报错(undefined is not a function) ,此时fun是个变量,虽然会变量提升,但在此行值为undefined;undefined不是函数,因此这句报错
var fun = function(){}

 

变量提升、函数提升

标签:nbsp   pre   执行函数   function   变量   bsp   执行   blog   声明   

原文地址:https://www.cnblogs.com/RocketV2/p/8480381.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!