直接先看两段代码
function getSum() {
var sum = a + b;
var a = 1;
var b = 2;
return sum;
}
getSum();
function getSum() {
...
分类:
编程语言 时间:
2015-07-05 18:37:05
阅读次数:
135
有代码如下:var a = 5;function A(){ alert(a); var a = 10; alert(this.a);}new A();结果: undefined undefined第一个是变量提升,相当于var a = 5;function A(){ var a ; ale...
分类:
其他好文 时间:
2015-07-02 01:02:24
阅读次数:
116
首先纠正下,文章标题里的 “变量提升” 名词是随大流叫法,“变量提升” 改为 “标识符提升” 更准确。因为变量一般指使用 var 声明的标识符,JS 里使用 function 声明的标识符也存在提升(Hoisting)。JS 存在变量提升(Hoisting),这个的设计其实是低劣的,它允许变量不声明...
分类:
编程语言 时间:
2015-06-11 07:00:57
阅读次数:
142
最近,在读《你不知道的JavaScript(上卷)》这本书,书中详细阐述了JavaScript众多重要但经常被大家忽略的点,在此强烈推荐!!!书中,第4章讲述了“提升”,从示例出发讲述了变量和函数提升的过程,纠正了自己以前错误的理解(相信好多人理解都是错误)!
我们习惯将var a = 2;看做一个声明,而实际上JavaScript引擎不这么认为!下面几个示例让你彻底搞懂JavaScript中的...
分类:
编程语言 时间:
2015-05-30 10:47:06
阅读次数:
163
很多语言中都有块级作用域,但JS没有,它使用var声明变量,以function来划分作用域,大括号“{}” 却限定不了var的作用域。用var声明的变量具有变量提升(declaration hoisting)的效果。ES6里增加了一个let,可以在{}, if, for里声明。用法同var,但作用域...
分类:
其他好文 时间:
2015-05-10 12:48:53
阅读次数:
125
之前和一个同事做一个项目的时候遇到了一个变量提升的问题,明明已经定义了但是会弹出undefined.后来查了一下,因为是变量提升的原因才导致的。
var V="Hello World";
(function(){
alert(V);
var V="111"
})()这个时候你会弹出一个undefined,按照我们本来的思路应该是弹出一个H...
分类:
Web程序 时间:
2015-04-17 14:00:09
阅读次数:
145
1、let命令Tips:块级作用域(只在当前块中有效)不会变量提升(必须先申明在使用)让变量独占该块,不再受外部影响不允许重复声明总之:let更像我们熟知的静态语言的的变量声明指令ES6新增了let命令,用来声明变量。用法类似于var,但所声明的变量,只能在let命令所在的代码块内有效。let声明的...
分类:
其他好文 时间:
2015-03-31 17:51:36
阅读次数:
130
先看下面一段代码: 1 var a = 0; 2 alert("1st alert : a = " + a); 3 function fun(){ 4 alert("2nd alert : a = " + a); 5 var a = 1; 6 setTimeout(funct...
分类:
Web程序 时间:
2015-02-07 18:43:28
阅读次数:
179
先看下面一段代码:
var a = 0;
alert("1st alert : a = " + a);
function fun(){
alert("2nd alert : a = " + a);
var a = 1;
setTimeout(function(){
alert("3rd alert : a = " + a);
a = 2;
...
分类:
编程语言 时间:
2014-09-22 14:31:22
阅读次数:
246
先来看一段代码: var?a?=?1;??
function?b()?{??
????a?=?10;??
????return;??
????function?a()?{}??
}??
b();??
alert(a);?//?the?result?is?:?1 如果你觉得结果是“...
分类:
编程语言 时间:
2014-08-11 10:24:31
阅读次数:
230