当前位置: 首页 > news >正文

燕郊做网站查查企业网

燕郊做网站,查查企业网,关闭站长工具seo综合查询,检测WordPress主题的网站文章目录 遍历提升与函数提升执行上下文执行上下文栈(1)执行上下文栈(2)面试题 遍历提升与函数提升 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>01_变量提升与函数提升</title> </head&…

文章目录

  • 遍历提升与函数提升
  • 执行上下文
  • 执行上下文栈(1)
  • 执行上下文栈(2)
  • 面试题

遍历提升与函数提升

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>01_变量提升与函数提升</title>
</head>
<body>
<!--
1. 变量声明提升* 通过var定义(声明)的变量, 在定义语句之前就可以访问到*: undefined
2. 函数声明提升* 通过function声明的函数, 在之前就可以直接调用*: 函数定义(对象)
3. 问题: 变量提升和函数提升是如何产生的?
-->
<script type="text/javascript">console.log('-----')/*面试题 : 输出 undefined*/var a = 3function fn () {console.log(a)var a = 4}fn()console.log(b) //undefined  变量提升fn2() //可调用  函数提升// fn3() //不能  变量提升var b = 3function fn2() {console.log('fn2()')}var fn3 = function () {console.log('fn3()')}
</script>
</body>
</html>

执行上下文

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>02_执行上下文</title>
</head>
<body>
<!--
1. 代码分类(位置)* 全局代码* 函数(局部)代码
2. 全局执行上下文* 在执行全局代码前将window确定为全局执行上下文* 对全局数据进行预处理* var定义的全局变量==>undefined, 添加为window的属性* function声明的全局函数==>赋值(fun), 添加为window的方法* this==>赋值(window)* 开始执行全局代码
3. 函数执行上下文* 在调用函数, 准备执行函数体之前, 创建对应的函数执行上下文对象(虚拟的, 存在于栈中)* 对局部数据进行预处理* 形参变量==>赋值(实参)==>添加为执行上下文的属性* arguments==>赋值(实参列表), 添加为执行上下文的属性* var定义的局部变量==>undefined, 添加为执行上下文的属性* function声明的函数 ==>赋值(fun), 添加为执行上下文的方法* this==>赋值(调用函数的对象)* 开始执行函数体代码
-->
<script type="text/javascript">console.log(a1, window.a1)window.a2()console.log(this)var a1 = 3function a2() {console.log('a2()')}console.log(a1)</script>
</body>
</html>

执行上下文栈(1)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>03_执行上下文栈</title>
</head>
<body>
<!--
1. 在全局代码执行前, JS引擎就会创建一个栈来存储管理所有的执行上下文对象
2. 在全局执行上下文(window)确定后, 将其添加到栈中(压栈)
3. 在函数执行上下文创建后, 将其添加到栈中(压栈)
4. 在当前函数执行完后,将栈顶的对象移除(出栈)
5. 当所有的代码执行完后, 栈中只剩下window
-->
<script type="text/javascript">var a = 10var bar = function (x) {var b = 5foo(x + b)}var foo = function (y) {var c = 5console.log(a + c + y)}bar(10)// bar(10)
</script></body>
</html>

执行上下文栈(2)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>04_执行上下文栈2</title>
</head>
<body>
<!--
1. 依次输出什么?gb: undefinedfb: 1fb: 2fb: 3fe: 3fe: 2fe: 1ge: 1
2. 整个过程中产生了几个执行上下文?  5
-->
<script type="text/javascript">console.log('gb: '+ i)var i = 1foo(1)function foo(i) {if (i == 4) {return}console.log('fb:' + i)foo(i + 1) //递归调用: 在函数内部调用自己console.log('fe:' + i)}console.log('ge: ' + i)
</script>
</body>
</html>

面试题

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>05_面试题</title><link rel="stylesheet" href="xxx.css"><style></style>
</head>
<body>
<div style=""></div>
<script type="text/javascript">/*测试题1:  先执行变量提升, 再执行函数提升,函数提升优先级高于变量提升*/function a() {}var aconsole.log(typeof a) // 'function'/*测试题2:*/if (!(b in window)) { // b是window的属性 !true = false,if语句不执行var b = 1 // 在if判断体中的变量也能提升}console.log(b) // undefined/*测试题3:*/var c = 1function c(c) {console.log(c)var c = 3}c(2) // 报错
//相当于:var cfunction c(c) {console.log(c)var c = 3}c = 1c(2) // 此时c不是函数
</script>
</body>
</html>
http://www.yayakq.cn/news/981867/

相关文章:

  • 免费永久个人网站多仓库版仓库管理网站建设源码
  • 网站建设费如何入账怎么摊销成都有什么好玩的娱乐场所
  • 大连网站建设酷网科技网站建设 企泰科技
  • 济南网站推广建设有限公司平面设计模板素材网站
  • 网站设计需要准备哪些知识安庆网站建设服务网
  • 做百度网站图片怎么做在线做六级阅读网站
  • 林州网站建设熊掌号成都管控政策最新消息
  • 有哪些可以接单做任务的网站重庆网站建设企业
  • 多个网站建站崇州企业网站建设
  • 劳动人事争议仲裁网站建设网站开发佛山
  • 深圳建企业网站公司淘宝搜索指数
  • 没有域名可以先做网站吗软件系统开发报价表
  • 做网站用什么配置的笔记本wordpress templateredirect
  • 海盐市网站建设淘宝购物网
  • 陕西有色建设有限公司官方网站房地产销售系统管理软件
  • 怎么建设一个开源平台网站域名和网站
  • 浙江省网站集约化建设内蒙古集宁建设厅官方网站
  • 兰州工程建设信息网站做古风人物小图的网站或软件
  • 淮南网站seo3d建模是什么专业
  • 兰州网站推包头网站网站建设
  • 湖北建设网官方网站新站快速收录
  • 自己做的网站跳转到购彩大厅seo平台
  • 网站设计的主要内容o2o生鲜电商平台有哪些
  • 公司网站开发费账务处理wordpress视频无法播放器
  • c2c的盈利模式网站对图片优化吗
  • 建设网站的能力wordpress 数据导出
  • 妇联 网站建设情况模板app
  • seo网站推广的主要目的不包括wordpress地址站点地址
  • 网站建设学习视频全省建设信息网站
  • 网站关键词效果追踪怎么做dedecms视频网站模板