Javascript是一门容易遭人误解的语言,但是它的强大毋庸置疑。个人觉得,要想深入理解Javascript语言,首先必须对其基本的概念(例如:Scope,Closure,Hoisting等)要真正理解。今天想通过自己的理解来对Javascript Hoisting(国内一般翻译为 变量提升)做一 ...
分类:
编程语言 时间:
2016-06-10 09:44:55
阅读次数:
139
一、let、var和const 1、let不存在变量提升 2、let变量不能重复声明 var变量可以重复声明(后面声明的变量覆盖前面声明的变量,但最后不要这么做) 3、如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域,纵使在全局变量中声明了一个相同名字的 ...
分类:
其他好文 时间:
2016-06-08 15:41:07
阅读次数:
151
cup = 'C'; console.log("cup: " + cup);//cup: C var cup;//全局的罩杯会被提升到最前 function hoisting(){ if(!cup){ cup = 'D' } console.log("cup: "+cup); var cup;//这 ...
分类:
其他好文 时间:
2016-05-31 18:53:56
阅读次数:
123
Javascript教程laiqun@msn.cnContents1.?javascript嵌入方式2.?javascript语法3.?数据类型4.?javascript变量5.?字符串6.?数组 多维数组7.?运算8.?Map和set9.?流程控制10.?函数11.?变量提升、变量的作用域12.?... ...
分类:
编程语言 时间:
2016-05-10 18:05:15
阅读次数:
382
前言hoist vt.升起,提起; vi.被举起或抬高; n.起重机,升降机; 升起; <俚>推,托,举;这篇文章不讲英语,但是对于某些英语单词找不到很好的翻译,一上来就列出“hoist”这个单词的释义是为了让大家有个准备,我在这里将此单词翻译为“提前”,是为了解释 JavaScript 语言中很“ ...
分类:
其他好文 时间:
2016-05-02 22:47:29
阅读次数:
186
函数 一、函数的声明 函数的声明关键字是function,一个函数是有关键字、函数名、参数(实际参数,形式参数)、和返回值构成。 函数类型 函数的重复声明 形式参数和retrun 立即函数 一等公民 函数名的提升(变量提升) 函数的属性和方法 函数作用域 函数本身的作用域 参数 传递方式 ...
分类:
其他好文 时间:
2016-04-25 06:31:18
阅读次数:
173
JavaScript引擎将函数名视同变量名,采用function命令声明函数时,整个函数会被提升到代码头部。 var sum = add(1, 2); console.log(sum); function add(x, y) { return x + y; } 以上代码由于“变量提升”,函数f被提升 ...
分类:
其他好文 时间:
2016-04-24 18:27:59
阅读次数:
185
这道题目比较经典了: 当时我回答出来了正确答案,但是在一系列追问之下露出了狐狸的尾巴。答案是2 我当时认为test执行之后,a=2赋值给了全局,那么返回function时那里的a指的是window.a,就是2了。 实际上var a=3这一句是陷阱。 由于变量提升 a=2之前有一个var a的声明,这 ...
分类:
编程语言 时间:
2016-04-24 11:07:34
阅读次数:
128
好久没写博客了,原本想实训结束能对整个实训项目认真总结一下,没想到回到学校一点都不轻松,最近在制作网页版简历,遇到了一个小问题,现在不总结以后肯定忙得顾不上,所以长话短说,抓紧时间写下来. 对js语法比较熟的同学可能都知道:js是没有块级作用域的,有一个新手很容易出错的地方 这段代码会输出10个10 ...
分类:
Web程序 时间:
2016-04-16 13:47:34
阅读次数:
203
预解释(变量提升):在当前的作用域中,JS代码从上到下执行之前,浏览器会默认的先把所有带var/function关键字的进行提前的声明或者定义
对带var变量的是提前声明(declare)
对带function关键字的是提前定义(声明+定义)(defined)->在预解释阶段,带var关键字的只是提前的..
分类:
其他好文 时间:
2016-04-04 06:52:33
阅读次数:
172