【建站服务】邵阳做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式-域名申请
作者: 风兰 . 阅读量: 21 . 发表时间:2022-09-21 03:44:25
上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
邵阳做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式

因为房价高,所以更需要努力
128***2546@qq.com
13
变量的声明和函数的声明提升,提升的时机发生在预解析过程中。
预解析过程也就是创建 AO(Activation Object) 的过程。
创建AO过程:
创建 AO 对象。
将形参和函数内变量声明作为对象的属性名,属性值统一为 undefined。
将实参赋值给形参。
找函数内的函数声明作为对象的属性名,属性值为函数体。
因为房价高,所以更需要努力
因为房价高,所以更需要努力
128***2546@qq.com
3年前 (2019-12-09)
小飞自学编程
838***551@qq.com
14
什么叫变量提升?
原则上变量应该先声明后使用,但是程序员小白常常忘记声明就使用了变量,这样做js代码在执行的时候不报错,只是返回了一个undefined。这种情况就是变量提升。
计算机执行的时候会把未声明就使用的变量隐式的放到代码的最顶端。需要注意的是变量虽然发生了提升,但是给变量赋的值是不会随之提升的,所以就会得到结果undefined。
什么是函数提升?
与变量提升的意思差不多,先使用函数,后再声明函数,这种违背逻辑的事情在JavaScript中是允许的,这门语言就是这么灵活。
与变量提升不同的是,函数的返回值也会随之提升,所以你会发现在<script>标签中的任何地方都能调用函数并且使用函数的返回值。
小飞自学编程
小飞自学编程
838***551@qq.com
2年前 (2020-07-17)
分类导航
HTML / CSS
JavaScript
服务端
数据库
数据分析
移动端
XML 教程
ASP.NET
Web Service
开发工具
网站建设
Advertisement
反馈/建议反馈/建议
邵阳做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站



test3:undefined, test4:function test4(){alert("测试4");}, test5:undefined, test1:function test1(){alert("测试1");}}所以第 13 行执行时在 AO 里能找到 test2 并作为函数运行,弹出提示框显示提示信息“测试2”。
第 15 行由于用于赋值的函数体后面加了 () 变成立即执行函数所以函数会立即运行(这里会弹出提示框显示提示信息“测试3”)然后将返回值赋值给 test3,由于函数没有返回值所以是 undefined,也就导致了 AO 里的 test3 的属性值还是 undefined(大家可以在第18行输出一下 test3,会发现还是输出 undefined)。
第 19 行将 12 赋值给 test4,将原来 test4 的属性值覆盖了,AO 对象变为:
AO{ test2:function(){alert("测试2");}, test3:undefined, test4:12, test5:undefined, test1:function test1(){alert("测试1");}}所以在第 25 行会输出 12(如果在这里再把 test4 作为函数去运行就会报错)。
第 27 行将 test5_1 赋值给 test5。
第 28 行是立即执行函数,会立即执行。
在执行之前会进行预编译所以这个函数又会创建一个 属于他自己的 AO 对象,为了区分我们将他标识为 AO2。
AO2{}然后将形参和变量声明作为 AO 对象的属性名,属性的值为 undefined。
AO2{ test5:undefined}然后进行实参形参统一,以及函数声明提升(由于没有所以略过)。执行第 30 行时在 AO2 里找到了 test5,属性值为 undefined。
所以会弹出提示框显示提示信息 “undefined”。
执行第 31 行是将 test5_2 赋值给 test5。
所以 AO2 变成了:
AO2{ test5:test5_2}熙熙
632***357@qq.com
因为房价高,所以更需要努力
128***2546@qq.com
预解析过程也就是创建 AO(Activation Object) 的过程。
创建AO过程:
创建 AO 对象。
将形参和函数内变量声明作为对象的属性名,属性值统一为 undefined。
将实参赋值给形参。