码迷,mamicode.com
首页 > Web开发 > 详细

js变量提升与函数提升

时间:2017-08-31 16:12:00      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:区分   处理   var   两种   ons   显示   function   赋值   fine   

在es6之前,js语言并没有块级作用域,即{}形成的作用域,只有全局作用域和函数作用域,所谓的提升,即是将该变量的声明或者函数的声明提升,举个例子

console.log(global); //undefined
var global = 111;
console.log(global);//111

显然,上面代码处于一个全局的作用域中,在该作用域中使用var声明了一个global变量,其实际的声明过程如下:

var global;
console.log(global); //undefined
global = 111;
console.log(global) //111

上面可见,var global的变量声明被提升到第一行了,因此第二行中的输出显示为undefined,第三行才对global变量进行赋值操作;

因此,需要注意的:

1、变量的声明在该作用域中,会被提升到出函数声明的最高级;

2、需要区分变量的声明变量的赋值是两种不同行为,需要分开处理;

 

函数提升:

函数常见的创建有两种方式:

1、函数声明;

function func(){
  ......  
}

  

 

2、函数表达式

var func = function() {}

然而,只有第一种函数声明的方式才有函数提升的作用。

 

举个例子:

console.log(func());//1
function func() {
  return 1;      
}

也就是说,就算函数在console之后被定义,依然会提升到该作用域的最顶端,而且高于变量提升。

js变量提升与函数提升

标签:区分   处理   var   两种   ons   显示   function   赋值   fine   

原文地址:http://www.cnblogs.com/Yoriluo/p/7458015.html

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