首页 > 其他分享 >UES-01-块级绑定

UES-01-块级绑定

时间:2024-04-26 22:22:08浏览次数:17  
标签:块级 01 变量 作用域 var 声明 UES 函数

var

如果在函数内部使用 var 声明变量,无论在内部的哪个地方声明,都相当于在函数的第一行声明该变量。若在函数外部使用 var 声明,则相当于在源文件的第一行声明该变量。这种行为称为变量提升 (hoisting)。

块级声明

let 声明的变量和其他类 C 语言一样具有块级作用域,生命周期从声明开始直到所在块结束。
不能在同一个块级作用域内声明同一个标识符两次,否则会抛出错误。
const 声明的变量是常量,与其他类 C 语言一致,具有块级作用域。
const 声明的变量引用对象,则不能修改对该对象的引用,但可以修改该对象的成员。
letconst 声明的变量如果在该变量所在的作用域内,声明语句之前使用,会发生运行时错误。但是可以在变量的作用域之外对该变量使用 typeof,不报错,此时变量为未定义。

循环中块级绑定

如果在循环中定义函数,函数用到了循环体内定义的 var 变量,则每个函数中该变量都是同一个,调用每个函数时使用的都是该变量。如

var f = [];

for (var i = 0; i < 10; i++) {
    f.push(function () {
        console.log(i);
    })
}

// 输出 10 个 10
f.forEach(function (func) {
    func();
});

为解决这个问题,可以将 var 变量传入函数中,在该函数中定义一个新函数,在新函数中使用该变量,相当于复制了一份该变量的值。如

var f = [];

for (var i = 0; i < 10; i++) {
    f.push(function (v) {
        return function () {
            console.log(v);
        };
    }(i));
}

// 输出 0 - 9
f.forEach(function (func) {
    func();
});

在 for 循环中使用 let 声明的变量,每次迭代时都重新定义并初始化同名的变量。也就是每次迭代使用的变量只有名称一样,实际上是不同的变量。
在 for 循环中使用 const 声明的变量不能改变值,否则抛出错误。可以在 for-in 或 for-of 中使用 const,此时迭代相当于重新创建了新的常量。

全局块级绑定

var 在全局作用域中声明变量时,在将该变量声明为全局变量的同时也将该变量作为了全局对象的一个属性(浏览器中全局对象为 window)。而 letconst 仅声明全局变量,不会将该变量作为全局对象的属性。

参考

[1] Zakas, Understanding ECMAScript 6, 2017.

标签:块级,01,变量,作用域,var,声明,UES,函数
From: https://www.cnblogs.com/xdreamc/p/16515621.html

相关文章

  • 初中中考阅读理解难题一网打尽!句子结构深度解析+答案揭秘,助你轻松冲刺高分!-012
    PDF格式公众号回复关键字:ZKYDT012原文1Richardfoundthebirdintheforest,didn’the?解析1Richard,found发现了,thebird这只鸟,intheforest在森林里,didn’the?不是吗理查德在森林里发现了这只鸟,不是吗?2Hesawastrangebirdinabush.他在灌木丛......
  • Day01 Web服务搭建&站库分离&路由访问
    常规的Web应用搭建:1.购买云服务器,购买域名2.云服务器去搭建中间件windowsserver安装web角色后默认可以直接通过域名打开网站首页3.下载并上传Web程序源码zblog源码官网可下载4.添加网站并绑定域名目录域名解析设置:二级域名ablog.whgojp.top解析到该服务器zblog程序......
  • [题解] [NOIP 2010] 饮水入城
    [题解][NOIP2010]饮水入城题目描述有一个\(n\timesm\)的矩阵,每一点的高度是\(h_{i,j}\)。矩阵的最下面一行是\(m\)个城市,现在要在第一行建水站为这些城市供水,水站建好后水可以从水站往别的点引水,只能从高处引向相邻的低处,如果一个城市存在可以给他引水的水站,则这个城......
  • Java并发01---JMM模型、Volatile、CAS操作、自旋锁、ABA问题
    @目录JMM(JavaMemoryModel)Volatile修饰CAS(CompareAndSwap)ABA问题JMM(JavaMemoryModel)首先要明确的是JMM与JVM内存结构不是同一个概念,记的时候不要记混。我们先来回顾一下JVM内存结构,其包括了堆、方法区、虚拟机栈、程序计数器、本地方法区,其中前二者为线程共享,后三者为线程......
  • 车用MCU,R7F701320EAFP、R7F701321EAFP、R7F701322EAFP、R7F701323EAFP微控制器功耗低,
    RH850/P1M——适用于底盘系统的汽车用微控制器简介RH850/P1M微控制器功耗低,闪存容量高达2MB,RAM容量高达128KB,具有增强型电机控制定时器、CAN接口、SENT和PSI5等传感器数字接口以及锁定CPU、ECC、BIST(内置自检)和ECM(错误控制模块)等安全功能,适用于底盘系统。此外,仅2......
  • 洛谷题单指南-动态规划2-P2679 [NOIP2015 提高组] 子串
    原题链接:https://www.luogu.com.cn/problem/P2679题意解读:在a中按顺序挑选k个子串,使得这些子串连在一起正好和b相等,求方案数。解题思路:这样的题目,无外乎两个思路:DFS暴搜(得部分分)、动态规划动态规划不好想,还是先暴搜吧!1、DFS暴搜搜索的思路就是:从a起始位置开始,一直找到跟b前......
  • 01. 计算机运行原理
    【二进制数据】全球所有人都习惯使用十进制数,也许是因为远古时期人类使用手势交流的原因,人类使用十个手指表示十个数据。中文使用一、二、三、四、五、六、七、八、九、十表示十个基础数字,并使用零表示没有任何数据,单个数字表示的数据范围是有限的,超过上限就使用多个数字的组合......
  • Bochs内存中的Guest和Host
      Bochs是通过配置文件(.bxrc文件)的方式来设置模拟计算机的硬件参数,其中MEMORY部分,分别需要设置Guest和Host的大小来决定虚拟计算机的内存大小,有什么区别呢?通过下面的Bochs构架图可以弄清楚:    要点说明:  1、Bochs在现实环境中属于应用程序,Host表示应用程序用来模拟内......
  • VS2017修改项目名称
    修改项目名称直接右击项目->重命名只是改了project的vcxproj文件中的ProjectName的值,而如果手动修改了项目文件夹的名称,就会造成解决方案按照其sln文件加载对应的项目时,找不到正确的项目路径,所以会加载失败。有了以上的描述,再来修改项目的名称就简单了,有以下几个步骤:1.右击项目-......
  • 平芯微PW7014中文规格书
    产品概述PW7014具有前端过电压和过温保护功能。支持3V到36V的宽输入电压工作范围。过压保护阈值可以外部设置4V~22V或采用内部默认6.1V设置。超快的过压保护响应速度能够确保后级电路的安全。集成了超低导通阻抗的nFET开关,确保电路系统应用更好的性能。它可以承......