网站地图 - XML地图 - 设为首页 - 加入收藏
您的当前位置:主页 > 国内 > 正文

连云港捌侄工贸有限公司_JavaScript 声明提前机制

声明提前机制

在JavaScript存在着这样一种预处理机制,即浏览器在解析JS代码时会将var声明的变量和function声明的函数提升到当前作用域的顶部。但是解析JS代码时对var和function关键字声明的对象的处理是不一样的:前者在解析时只是将声明提前了,但是赋值却依旧在原来的位置。而后者不仅将声明提前了,而且将定义也完成。具体请看下面的例子:

1 console.log(hello);         //undefined
2 sayHi();                    //hi
3 
4 var hello = "hello";
5 console.log(hello);         //hello
6 
7 function sayHi() {
8     console.log("hi");
9 }

在第一行输出一个在下面用var声明并且赋值的hello变量,没有报错但是输出的是undefined,说明hello变量的声明确实是被提前了但是没有赋值,所以输出的是undefined。正是因为给变量赋值依旧在原来的位置,所以第五行输出hello变量可以正常输出。在处理function定义的sayHi函数时,sayHi的声明被提前了,同时也对它进行了定义,所以在第二行调用sayHi时正常输出hi而不是报 sayHi is not defined 或者sayHi is not a function的错。

1 console. log hello undefined 2 sayHi hi 3 4 var hello " hello" 5 console. log hello hello 6 7 function sayHi 8 console. log" hi" 9 zai di yi xing shu chu yi ge zai xia mian yong var sheng ming bing qie fu zhi de hello bian liang, mei you bao cuo dan shi shu chu de shi undefined, shuo ming hello bian liang de sheng ming que shi shi bei ti qian le dan shi mei you fu zhi, suo yi shu chu de shi undefined. zheng shi yin wei gei bian liang fu zhi yi jiu zai yuan lai de wei zhi, suo yi di wu xing shu chu hello bian liang ke yi zheng chang shu chu. zai chu li function ding yi de sayHi han shu shi, sayHi de sheng ming bei ti qian le, tong shi ye dui ta jin xing le ding yi, suo yi zai di er xing diao yong sayHi shi zheng chang shu chu hi er bu shi bao sayHi is not defined huo zhe sayHi is not a function de cuo.

函数声明优先于变量声明

需要注意的是:函数声明优先于变量声明,看下面例子:

1 console.log(sayHi);         // ? sayHi() { console.log("hi"); }
2 
3 var sayHi = "sayHi";
4 function sayHi() {
5     console.log("hi");
6 }
7 
8 console.log(sayHi);         // sayHi

先用var声明变量sayHi并赋值为"sayHi",然后用function再将sayHi重新声明为一个函数。在声明的前后输出sayHi,发现前面输出的是一个函数,后面输出的是一个字符串"sayHi"。显然可以看出函数声明是优先于变量声明的。

这篇博客正好也解释了我之前写的一篇函数声明与函数表达式的区别,感兴趣的可以去看一下。

当前文章:http://www.mobi-le.com/y8ug/407296-742996-14344.html

发布时间:08:10:35

www.11914.com??www.tsp518.com??白小姐心水论坛76722??周天师??www.kj55.com??六合助手??手机即时开奖场报码下??曾道点特23476??www.844511.com??欣欣图库1880??

注:凡本网注明来源非本站的作品,均转载自其它媒体,并不代表本网赞同其观点和对其真实性负责。
本站致力于帮助文章传播,希望能够建立合作关系。
若有任何不适的联系以下方式我们将会在24小时内删除。联系方式:
Copyright ? 2018 蜘蛛免费加入抢红包群 版权所有