JavaScript学习手册(55)

2023-10-26

变量提升与函数提升

  1. 变量提升声明

    通过var定义(声明)的变量,在定义语句之前就可以访问到

    值:undefined

  2. 函数提升声明

    通过function声明的函数,在之前就可以调用

    值:函数定义(对象)

  3. 问题:变量提升和函数提升是如何产生的?

执行上下文

代码分类(位置)

  1. 全局代码
  2. 函数代码

全局执行上下文

  1. 在执行全局代码前将window确定为全局执行上下文

  2. 对全局数据进行预处理

    var定义的全局变量==》undefined,添加为window的属性

    function声明的全局函数==》赋值(fun),添加为window的方法

    this==》赋值(window)

  3. 开始执行全局代码

函数执行上下文

  1. 在调用函数,准备执行函数体之前,创建对应的函数执行上下文对象(虚拟的,存在于栈中)

  2. 对全局数据进行预处理

    形参变量==》赋值(实参)==》添加为执行上下文的属性

    arguments==》赋值(实参列表),添加为执行上下文的属性

    var定义的局部变量==》undefined,添加为执行上下文的方法

    function声明的函数==》赋值(fun),添加为执行上下文的方法

    this==》赋值(调用函数的对象)

  3. 开始执行函数体代码

执行上下文栈

  1. 在全局代码执行前,JS引擎就会创建一个栈来存储管理所有的执行上下文对象
  2. 在全局执行上下文(window)确定后,将其添加到栈中(压栈)
  3. 在函数执行上下文创建后,将其添加到栈中(压栈)
  4. 在当前函数执行完后,将栈顶的对象移除(出栈)
  5. 当所有的代码执行完后,栈中只剩下window

在这里插入图片描述
每日一句
这世界的大多数事情,不是稍微努力就可以搞定

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript学习手册(55) 的相关文章

  • 使用非常大的背景位置偏移是否存在性能问题?

    我正在构建一个进度条控件 并且正在研究它实际上并不显示进度 而只是旋转 正在发生某事 的指示器的情况 我的设计基本上是交替的对角条纹 本质上是一个像这样的理发杆 但是 旋转 由于希望将尽可能多的负载转移给渲染引擎 我想为此使用 CSS 过渡
  • Javascript:使用 IIFE 和块语句之间的区别

    IIFE主要用于封装作用域 function let myVar 10 not global 但为什么不直接使用块语句呢 let myVar 10 also not global 除了范围封装之外 进一步使用 IIFE 是否还有其他好处 块
  • JS文件中的System.register是什么意思?

    在 Angular 2 中使用指令时 JS 文件中的 System register 是什么意思 我认为这个问题并不特定于 Angular2 中的指令 它是关于 ES6 TypeScript 和其他使用 SystemJS 的现代编译器的一般
  • Twitter Bootstrap - 下拉菜单 - 箭头键不适用于 Firefox 中的输入标签

    要求 我想在带有用户名和密码字段的下拉菜单中放置一个登录表单 我可以做到这一点 除了以下问题之外 一切正常 Issue 打字时我无法使用箭头键 上 下 firefox 当输入位于下拉代码之外时 这很有效 这适用于其他浏览器 例如 googl
  • 个人 Tumblr 帖子上的 Javascript

    我知道您可以编辑在 tumblr 博客上呈现所有帖子博客主页的 html AngularJS 但是 有什么办法可以添加自定义到各个帖子 我想在逐个帖子的基础上做一些 javascript 的东西 但似乎无法找到可以编辑代码的位置 或者 如果
  • Angular UI-Router:多个 URL 到单一状态

    我已经开始使用 Angular 的 ui router 并且我正在尝试弄清楚如何让多个 URL 引用单个状态 例如 orgs 12354 overview retyrns the same pages as org overview 我的
  • 在 UIWebView 中禁用复制和粘贴

    几乎 我已经尝试了一切方法来禁用复制 粘贴UIWebView但对我来说没有任何作用 我正在加载我的UIWebView来自字符串 字符串数组 如下所示 webView loadHTMLString NSString stringWithFor
  • 使用 Javascript/Node.js 在代码内执行 mongoimport

    node js javascript 中是否有任何库可供个人使用mongoimport在代码中 据我了解 mongoimport 有点像 exe 您必须先执行它 然后才能使用其文本输入环境 是否可以在我的代码中执行 mongoimport
  • 使用 JavaScript 防止网页导航离开

    如何使用 JavaScript 防止网页导航离开 Using onunload允许您显示消息 但不会中断导航 因为为时已晚 然而 使用onbeforeunload将中断导航 window onbeforeunload function re
  • Angular 2 将字符串转换为 md5 哈希

    我找到了ts md5 https www npmjs com package ts md5包 但在示例中它有一个hashStr方法 但现在不行了 类型上不存在属性 hashStr Md5 使用该错误后 该错误会记录在我的控制台中 我怎样才能
  • 如何在打字稿中使用外部js

    我通过 Typescript 代码生成 Angular JS 代码 在一种情况下 我需要将外部 JS 文件添加到我的打字稿文件中 并且需要访问 js 文件中的类 我像这样添加js文件
  • JQuery $.ajax() 在 java servlet 中发布数据

    我想将数据发送到 java servlet 进行处理 数据将具有可变长度并采用键 值对 A1984 1 A9873 5 A1674 2 A8724 1 A3574 3 A1165 5 数据不需要这样格式化 这就是我现在的方式 var sav
  • 如何使用 Javascript 在 html 文件中搜索字符串?

    我有 5 个 html 文件 并且有一个搜索表单 我想用它来搜索这些 html 文件中的文本
  • 如何使用 Javascript OAuth 库不暴露您的密钥?

    看着Twitter OAuth 库 https dev twitter com docs twitter libraries 我看到了这个注释 将 JavaScript 与 OAuth 结合使用时要小心 不要暴露你的钥匙 然后 看着jsOA
  • 什么时候可以使用Javascript,什么时候不可以?

    不使用太多 javascript jquery 是个好习惯吗 我们应该尽可能避免它 为了良好的可访问性 吗 什么时候可以使用 JavaScript 什么时候不能在网页设计和开发中使用 JavaScript 在什么场景 什么条件下 Updat
  • 如何使用 fetch() 和 WhatWG 流获取文件上传进度

    注意 我并不是在寻找任何替代方案 我知道这可以通过 XMLHttpRequest 来完成 我也不关心浏览器支持 我只想了解新的 即将推出的标准 我有一个File https developer mozilla org en US docs
  • 如果 jquery 验证激活,如何在单选按钮中放置红色边框[重复]

    这个问题在这里已经有答案了 我的问题是 如果 jquery 验证像示例图片中那样激活 我无法使单选按钮具有红色边框 任何人都可以帮我解决这个问题吗 http i38 photobucket com albums e149 eloginko
  • ‘state’未定义 no-undef

    我使用教程来学习 React 但我很快就陷入困境 在教程中 他们使用以下代码 import React Component from react class Counter extends Component state count 0 r
  • VS Code 扩展 - 获取完整路径

    我正在为 VS Code 编写一个插件 我需要知道调用扩展的文件的路径 无论是从编辑器上下文菜单或资源管理器上下文菜单调用还是用户只需键入扩展命令 function activate context get full path of the
  • 使用
    元素作为 JavaScript 代码的输入。这是最好的方法吗?

    各位 显然 我是编码新手 所以最近完成了一些有关 HTML 和 Javascript 的 Lynda 课程后 我的简单 HTML 页面遇到了困难 基本上 我想要的是使用 JavaScript 进行基本计算 让用户使用 HTML 输入两个数字

随机推荐

  • mobx的使用

    mobx的使用 1 API mobx react Provider 包裹根组件 用于传递数据 observer 组件变为响应式 inject 接收mobx实例 用于类组件 MobXProviderContext mobx observabl
  • 远程控制---实验九:IPC远程植入木马

    目录 一 实验目的及要求 二 实验原理 IPC 空会话 IPC建立的过程 木马 三 实验环境 四 实验步骤及内容 五 实验总结 六 分析与思考 一 实验目的及要求 1 掌握利用 IPC 入侵目标计算机 windows XP 或 window
  • Java虚拟机内存参数设置

    Java虚拟机内存参数设置 前言 Java虚拟机 JVM 是一种抽象的计算机器 JVM是一个程序 对于编写在其中执行的程序来说 它看起来像一台机器 通过这种方式 Java程序被写入相同的接口和库集 针对特定操作系统的每个JVM实现都将Jav
  • 使用nginx反向代理docker安装的jenkins

    描述 使用nginx反向代理jenkins nginx反向代理 docker安装的jenkins 方法 一 nginx反向代理docker安装的jenkins 1 使用 vim etc nginx nginx conf进入nginx 的配置
  • Typescript类型注解和类型推断

    在TypeScript中有两个基本概念 类型注解和类型推断 这两个概念在我们使用TypeScript代码时会一直使用 一 类型注解 type annotation 如 let count number count 123 这种就是类型注解
  • QT运行出现The CDB process terminated解决办法(亲测有效)

    QT运行出现The CDB process terminated解决办法 运行程序时出现如图所示的问题 检查2件事 1 检查编译器和调试器 工具 选项 构建和运行 如果是电脑图标证明不是这里的问题 如果出现黄色的感叹号证明编译器和调试器没有
  • XNA简介

    href file C DOCUME 1 ADMINI 1 LOCALS 1 Temp msohtml1 02 clip filelist xml rel File List gt XNA简介 XNA简介 首先声明 XNA不是游戏引擎 它只
  • linux g++编译以及库多重依赖

    目录 一 编译命令 二 编译相关选项 三 静态库和动态库的编译命令 1 生成动态库和静态库 2 fPIC选项 3 如何解决运行时找不到链接库的问题 四 库多重依赖 1 动态库依赖动态库 2 动态库依赖静态库 3 静态库依赖静态库 一 编译命
  • 用了很多年的PC端离线版个人知识管理软件PKM2 Manager推荐给大家

    对于从事IT行业的童鞋来说 每人每天每月都会遇到大量的新知识与旧知识出现在眼前 从而就会出现知识容易遗忘 经验容易流失的情况 比如 曾经遇到过的某类问题 今天再次出现了 或曾经做过一次事情步骤 今天要再次重新做一遍等等 对这些众多的知识若没
  • 最难用的鼠标键、设置半天、反人类逻辑(罗技)

    目的 高效设置罗技鼠标键 提高复制粘贴效率 准备软件 Logitech G HUB Logitech 支持 下载 1 右上角 点击箭头 点击管理配置文件 2 左下角 点击加号 创建配置文件 办公 3 点击办公 4 右上角选择 办公 底部点击
  • YOLO算法概述与细节

    R CNN系列算法是two stage 两步走算法 yolo和ssd属于one stage算法 yolo v1 把图片分成若干个小区域 每个小区域负责检测是否有物体的中心点落在其中 每个小区域可预测多个box 但是只能检测一个物体 算法首先
  • 在C++中实现foreach循环,比for_each更简洁!

    原文 http blogread cn it article 2570 f sr python c java里面都有类似于foreach的结构 stl里面虽然有for each这个函数 但是感觉使用还是太繁琐了一些 所以就自己实现了一个 先
  • docker搭建lanproxy内网穿透服务

    docker搭建lanproxy内网穿透服务 一 服务端 1 1 安装docker 1 2 安装nginx 1 3 域名解析 1 4 安装lanproxy server 1 5 配置 nginx 反向代理 1 6 继续配置 lanproxy
  • JZ76 删除链表中重复的结点

    JZ76 删除链表中重复的结点 描述 在一个排序的链表中 存在重复的结点 请删除该链表中重复的结点 重复的结点不保留 返回链表头指针 例如 链表 1 gt 2 gt 3 gt 3 gt 4 gt 4 gt 5 处理后为 1 gt 2 gt
  • centos忘记root密码后如何重置!

    忘记系统管理员密码真是件头疼的事 centos7的拯救之路如下 第一步 重启系统 按 e 进入启动文件界面后 第二步 按 拉到底部 找到linux16这一行 将ro改成rw 在这行最后面加上 init bin sh 第三步 然后按 Ctrl
  • 一文读懂 MySQL 锁

    1 MySQL 锁简介 1 1 什么是锁 锁是计算机用以协调多个进程间并发访问同一共享资源的一种机制 MySQL中为了保证数据访问的一致性与有效性等功能 实现了锁机制 MySQL中的锁是在服务器层或者存储引擎层实现的 1 2 锁用来解决什么
  • echart重新渲染(新)

    我看别人写的博文并不管用 自己看了api研究了一会 各位码子们 见证奇迹的时刻到了 myChart clear 消除当前实例 option color rgba 65 140 240 1 rgba 0 22 79 1 改变颜色 myChar
  • c++学习之set容器-自定义数据类型指定排序规则

    存放自定义数据类型必须要指定排序规则 include
  • Ubuntu弹窗“System program problem detected”

    Ubuntu系统有时会弹框 System program problem detected 系统在告诉你 你的系统的一部分崩溃了 但并不是一个严重的问题 你的系统是完全可用的 Ubuntu中有内建实用程序叫做Apport Apport是Ub
  • JavaScript学习手册(55)

    变量提升与函数提升 变量提升声明 通过var定义 声明 的变量 在定义语句之前就可以访问到 值 undefined 函数提升声明 通过function声明的函数 在之前就可以调用 值 函数定义 对象 问题 变量提升和函数提升是如何产生的 执