JavaScript 第十五章(变量声明、作用域与解构赋值)

在JavaScript编程中,理解变量声明、作用域以及解构赋值是至关重要的。下面我们将逐一深入探讨这些概念,并提供相应的示例。

  1. 变量声明与赋值
    在JavaScript中,变量可以通过var, let, 或 const关键字声明。变量声明是将一个名字和一个存储位置绑定,而赋值则是将一个值存储在这个位置上。例如:

    let age = 30; // 声明一个名为age的变量,并赋值为30
    
  2. 变量与常量的概念
    变量是可以改变值的标识符,而常量是一旦赋值后就不能改变的标识符。例如:

    const PI = 3.14159; // 声明一个常量PI,并赋值为3.14159
    
  3. JavaScript中的let和const关键字
    let关键字用于声明一个块作用域的局部变量,而const用于声明一个块作用域的常量。例如:

    let name = 'Alice'; // 使用let声明一个变量
    const greeting = 'Hello'; // 使用const声明一个常量
    
  4. 变量与常量的作用域
    使用letconst声明的变量和常量具有块作用域,即它们只在声明它们的代码块内有效。例如:

    if (true) {
      let localVariable = 'I am inside a block';
      console.log(localVariable); // 正常输出
    }
    console.log(localVariable); // 报错,localVariable不在作用域内
    
  5. ES6之前的var关键字及其特性
    在ES6之前,var是声明变量的唯一方式,它声明的变量具有函数作用域或全局作用域。例如:

    var oldWay = 'I am old';
    
  6. var声明的作用域提升
    使用var声明的变量会发生作用域提升,即变量可以在声明之前被引用,其值为undefined。例如:

    console.log(hoistedVar); // 输出undefined
    var hoistedVar = 'I am hoisted';
    
  7. 使用未声明的变量的后果
    在非严格模式下,未声明的变量会被隐式地创建为全局变量。这是一个不好的实践,因为它可能导致意外的全局变量污染。例如:

    function badPractice() {
      undeclaredVar = 'I am global';
    }
    badPractice();
    console.log(undeclaredVar); // 输出'I am global'
    
  8. 解构赋值(数组和对象)
    解构赋值允许我们从数组或对象中提取数据,并赋值给新的变量。例如:

    let [firstName, lastName] = ['John', 'Doe']; // 数组解构
    let {title, author} = {title: 'JavaScript', author: 'ECMA'}; // 对象解构
    
  9. for循环中的变量声明和解构
    for循环中,我们可以声明变量并进行解构赋值。例如:

    for (let [index, value] of ['a', 'b', 'c'].entries()) {
      console.log(`Index: ${index}, Value: ${value}`);
    }
    
  10. 嵌套解构赋值
    我们可以解构嵌套的数组或对象。例如:

    let options = {
      size: {
        width: 100,
        height: 200
      },
      items: ['Cake', 'Donut']
    };
    
    let {
      size: { width, height },
      items: [item1, item2]
    } = options;
    
  11. 解构赋值的默认值和剩余参数
    解构赋值可以提供默认值,并且可以使用剩余参数语法来获取剩余的值。例如:

    let [name = 'Guest', ...titles] = ['Julia', 'Ms.', 'Ph.D.'];
    console.log(name); // 'Julia'
    console.log(titles); // ['Ms.', 'Ph.D.']
    
  12. 解构赋值与可迭代对象
    解构赋值不仅适用于数组,还适用于任何可迭代的对象。例如:

    let [a, b, c] = new Set([1, 2, 3]);
    console.log(a); // 1
    
  13. 严格模式下变量的使用规则
    在严格模式下,使用未声明的变量会抛出错误。严格模式可以通过在文件或函数的顶部添加'use strict';来启用。例如:

    'use strict';
    undeclaredVar = 'This will throw an error'; // 抛出错误
    
  • 15
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
前言1   第1章 JavaScript概述5   1.1 JavaScript语言核心8   1.2 客户端JavaScript12   第一部分 JavaScript 语言核心   第2章 词法结构25   2.1 字符集25   2.2 注释27   2.3 直接量27   2.4 标识符和保留字28   2.5 可选的分号30   第3章 类型、值和变量32   3.1 数字34   3.2 文本38   3.3 布尔值43   3.4 null和undefined44   3.5 全局对象45   3.6 包装对象46   3.7 不可变的原始值和可变的对象引用47   3.8 类型转换48   3.9 变量声明55   3.10 变量作用域56   第4章 表达式和运算符60   4.1 原始表达式60   4.2 对象和数组的初始化表达式61   4.3 函数定义表达式62   4.4 属性访问表达式63   4.5 调用表达式64   4.6 对象创建表达式64   4.7 运算符概述65   4.8 算术表达式69   4.9 关系表达式74   4.10 逻辑表达式79   4.11 赋值表达式81   4.12 表达式计算83   4.13 其他运算符86   第5章 语句91   5.1 表达式语句92   5.2 复合语句和空语句92   5.3 声明语句94   5.4 条件语句96   5.5 循环101   5.6 跳转106   5.7 其他语句类型113   5.8 JavaScript语句小结116   第6章 对象118   6.1 创建对象120   6.2 属性的查询和设置123   6.3 删除属性127   6.4 检测属性128   6.5 枚举属性130   6.6 属性getter和setter132   6.7 属性的特性134   6.8 对象的三个属性138   6.9 序列化对象141   6.10 对象方法142   第7章 数组144   7.1 创建数组 144   7.2 数组元素的读和写145   7.3 稀疏数组147   7.4 数组长度148   7.5 数组元素的添加和删除149   7.6 数组遍历149   7.7 多维数组151   7.8 数组方法152   7.9 ECMAScript 5中的数组方法 156   7.10 数组类型160   7.11 类数组对象161   7.12 作为数组的字符串163   第8章 函数165   8.1 函数定义166   8.2 函数调用168   8.3 函数的实参和形参173   8.4 作为值的函数178   8.5 作为命名空间的函数181   8.6 闭包182   8.7 函数属性、方法和构造函数188   8.8 函数式编程194   第9章 类和模块201   9.1 类和原型202   9.2 类和构造函数203   9.3 JavaScript中Java式的类继承207   9.4 类的扩充210   9.5 类和类型212   9.6 JavaScript中的面向对象技术217   9.7 子类230   9.8 ECMAScript 5 中的类239   9.9 模块248   第10章 正则表达式的模式匹配253   10.1 正则表达式的定义253   10.2 用于模式匹配的String方法261   10.3 RegExp对象263   第11章 JavaScript的子集和扩展267   11.1 JavaScript的子集268   11.2 常量和局部变量271   11.3 解构赋值274   11.4 迭代276   11.5 函数简写285   11.6 多catch 从句285   11.7 E4X: ECMAScript for XML286   第12章 服务器端JavaScript290   12.1 用Rhino脚本化Java291   12.2 用Node实现异步I/O297   第二部分 客户端JavaScript   第13章 Web浏览器中的JavaScript309   13.1 客户端JavaScript309   13.2 在HTML里嵌入JavaScript313   13.3 JavaScript程序的执行319   13.4 兼容性和互用性326   13.5 可访问性333   13.6 安全性334   13.7 客户端框架339   第14章 Window对象341   14.1 计时器342   14.2 浏览器定位和导航343   14.3 浏览历史345   14.4 浏览器和屏幕信息346   14.5 对话框348   14.6 错误处理351   14.7 作为Window对象属性的文档元素351   14.8 多窗口和窗体353   第15章 脚本化文档361   15.1 DOM概览362   15.2 选取文档元素364   15.3 文档结构和遍历371   15.4 属性375   15.5 元素的内容378   15.6 创建、插入和删除节点382   15.7 例子:生成目录表387   15.8 文档和元素的几何形状和滚动389   15.9 HTML表单396   15.10 其他文档特性404   第16章 脚本化CSS410   16.1 CSS概览411   16.2 重要的CSS属性416   16.3 脚本化内联样式427   16.4 查询计算出的样式431   16.5 脚本化CSS类433   16.6 脚本化样式表436   第17章 事件处理440   17.1 事件类型442   17.2 注册事件处理程序451   17.3 事件处理程序的调用454   17.4 文档加载事件459   17.5 鼠标事件461   17.6 鼠标滚轮事件465   17.7 拖放事件468   17.8 文本事件475   17.9 键盘事件478   第18章 脚本化HTTP484   18.1 使用XMLHttpRequest487   18.2 借助

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰火流光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值