变量提升题目:
(function(){ a=5 console.log(window.a) var a=10 console.log(a) })()
答案如下(还请先思考哦)
//编译后 (function(){ var a; a=5; console.log(window.a) //undefined a=10; console.log(a) //10 })()
函数提升题目:
function test(){ console.log(1,foo); console.log(2,bar); var foo='hello' console.log(3,foo); var bar =function(){ return 'world' } function foo(){ return 'hello' } } test()
答案如下:
//编译后
//函数提升优先级大于变量提升
function test(){ function foo(){ return 'hello' } var foo; var bar; console.log(1,foo); //foo(){ } console.log(2,bar); //undefined foo='hello' console.log(3,foo); //hello bar =function(){ return 'world' } } test()
总结:
1.对于用var声明的变量,声明会提升到其所在作用域的顶端,但赋值操作不会提升。
2.函数声明同样也会提升,这里仅限于函数声明,并不包含函数表达式。
3.如果变量名和函数名一样的话,函数提升优先级高于变量提升。
4.如果存在两个函数声明,则先出现的声明先提升,后出现的声明后提升,函数名相同的时候,后提升的会覆盖先提升的。
声明:本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。