JavaScript核心语法(3)

前两篇文章大概把JavaScript的基础语法讲了一下,这篇文章主要讲讲ES6的核心语法。ES6的核心语法说实话其实有点多,我重点挑一些经常在项目中用到的来讲,其他一些我没怎么见过的就不讲了。

目录

1.变量和常量

变量(let 和 var)

var

let

常量(const)

总结

2.箭头函数

语法

示例

特性和行为

使用场景


1.变量和常量

变量(let 和 var

var

  • 作用域var 声明的变量是函数作用域或全局作用域的。如果在函数内声明,则在整个函数内都可以访问;如果在函数外声明,则在全局范围内都可以访问。
  • 提升var 声明的变量会被提升到函数或全局作用域的顶部,但不会初始化。这意味着你可以在声明之前访问它们,但值是 undefined
function example() {console.log(x); // undefinedvar x = 10;console.log(x); // 10
}
example();

let

  • 作用域let 声明的变量是块级作用域的。这意味着它们只在声明它们的块(如 {} 包围的代码块)内有效。
  • 提升let 声明的变量不会被提升到块的顶部,因此在声明之前访问它们会导致 ReferenceError
function example() {console.log(x); // ReferenceError: x is not definedlet x = 10;console.log(x); // 10
}
example();

常量(const

  • 作用域const 声明的变量是块级作用域的,这与 let 类似。
  • 不可变const 声明的变量必须在声明时初始化,并且不能重新赋值。注意,const 只保证变量名指向的内存地址不变,对于复杂类型(如对象和数组),其内容仍然可以修改。
function example() {const x = 10;console.log(x); // 10x = 20; // TypeError: Assignment to constant variable.
}
example();// 对于对象或数组
const obj = { a: 1 };
obj.a = 2; // 合法,修改对象属性
console.log(obj.a); // 2

总结

  • var:函数作用域或全局作用域,变量提升,允许重复声明。
  • let:块级作用域,不提升,不能在同一作用域内重复声明。
  • const:块级作用域,不提升,必须初始化,不能重新赋值,适用于常量。

2.箭头函数

箭头函数是 ES6 中引入的一种更简洁的函数表达方式。它们具有一些独特的特性,使得它们在某些情况下比传统函数更方便使用。以下是箭头函数的详细介绍。

语法

箭头函数的基本语法如下:

(param1, param2, ..., paramN) => { statements }

如果只有一个参数,可以省略圆括号:

param => { statements }

如果函数体只有一条语句,并且需要返回值,可以省略大括号和 return 关键字:

(param1, param2, ..., paramN) => expression

示例

  1. 无参数的箭头函数
const sayHello = () => {console.log("Hello!");
};
sayHello(); // 输出 "Hello!"
  1. 一个参数的箭头函数
const square = x => x * 2;
console.log(square(4)); // 输出 8
  1. 多个参数的箭头函数
const add = (a, b) => a + b;
console.log(add(3, 5)); // 输出 8

特性和行为

  1. 没有自己的 this 绑定

    箭头函数不会创建自己的 this,它会捕获其所在上下文的 this 值,作为自己的 this 值。

    function Person() {this.age = 0;setInterval(() => {this.age++;console.log(this.age);}, 1000);
    }const p = new Person();
    

    在上面的示例中,箭头函数中的 this 绑定到 Person 实例,因此可以正确访问 this.age

  2. 简化回调函数

    const numbers = [1, 2, 3, 4];
    const doubled = numbers.map(n => n * 2);
    console.log(doubled); // 输出 [2, 4, 6, 8]
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/479348.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫开发(5)如何写一个CSDN热门榜爬虫小程序

笔者 綦枫Maple 的其他作品,欢迎点击查阅哦~: 📚Jmeter性能测试大全:Jmeter性能测试大全系列教程!持续更新中! 📚UI自动化测试系列: SeleniumJava自动化测试系列教程❤ &#x1f4da…

NIO三大组件

现在互联网环境下,分布式系统大相径庭,而分布式系统的根基在于网络编程,而netty恰恰是java领域的网络编程的王者,如果要致力于并发高性能的服务器程序、高性能的客户端程序,必须掌握netty网络编程。 NIO基础 NIO是从ja…

34 基于单片机的指纹打卡系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52RC,采用两个按键替代指纹,一个按键按下,LCD12864显示比对成功,则 采用ULN2003驱动步进电机转动,表示开门,另一个…

李宏毅机器学习课程知识点摘要(14-18集)

线性回归,逻辑回归(线性回归sigmoid),神经网络 linear regression , logistic regression , neutral network 里面的偏导的相量有几百万维,这就是neutral network的不同,他是…

文件上传upload-labs-docker通关

(图片加载不出,说明被和谐了) 项目一: sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充:环境搭建在Linux虚拟机上的同时,以另一台Windows虚拟机进行测试最…

【Android】静态广播接收不到问题分析思路

参考资料: Android 静态广播注册流程(广播2)-CSDN博客 Android广播发送流程(广播3)_android 发送广播-CSDN博客 https://zhuanlan.zhihu.com/p/347227068 在Android中,静态广播如果静态广播不能接收,我们可以从整个流程中去分析&#xff…

2024 APMCM亚太数学建模C题 - 宠物行业及相关产业的发展分析和策略(详细解题思路)

在当下, 日益发展的时代,宠物的数量应该均为稳步上升,在美国出现了下降的趋势, 中国 2019-2020 年也下降,这部分变化可能与疫情相关。需要对该部分进行必要的解释说明。 问题 1: 基于附件 1 中的数据及您的团队收集的额…

Git简单介绍

一、 Git介绍与安装 1.1 Git简介 Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 1.2集中式(SVN) VS 分布式(git) 集中式版本控制系统,版本库是集中存放在中央服务器的,工作时要先从中央…

CSS之3D转换

三维坐标系 三维坐标系其实就是指立体空间,立体空间是由3个轴共同组成的。 x轴:水平向右注意:x右边是正值,左边是负值 y轴:垂直向下注意:y下面是正值,上面是负值 z轴:垂直屏幕注意:往外面是正值,往里面是负值 3D移动 translat…

kafka生产者和消费者命令的使用

kafka-console-producer.sh 生产数据 # 发送信息 指定topic即可 kafka-console-producer.sh \ --bootstrap-server bigdata01:9092 \ --topic topicA # 主题# 进程 29124 ConsoleProducer kafka-console-consumer.sh 消费数据 # 消费数据 kafka-console-consumer.sh \ --boo…

基于Springboot的心灵治愈交流平台系统的设计与实现

基于Springboot的心灵治愈交流平台系统 介绍 基于Springboot的心灵治愈交流平台系统,后端框架使用Springboot和mybatis,前端框架使用Vuehrml,数据库使用mysql,使用B/S架构实现前台用户系统和后台管理员系统,和不同级别…

【人工智能】Python常用库-Scikit-learn常用方法教程

Scikit-learn 是一个功能强大的机器学习库,支持数据预处理、分类、回归、聚类、降维等功能,广泛用于模型开发与评估。以下是 Scikit-learn 的常用方法及详细说明。 1. 安装与导入 安装 Scikit-learn: pip install scikit-learn导入基本模块…

Tcon技术和Tconless技术介绍

文章目录 TCON技术(传统时序控制器)定义:主要功能:优点:缺点: TCONless技术(无独立时序控制器)定义:工作原理:优点:缺点: TCON与TCONl…

计算机基础(下)

内存管理 内存管理主要做了什么? 操作系统的内存管理非常重要,主要负责下面这些事情: 内存的分配与回收:对进程所需的内存进行分配和释放,malloc 函数:申请内存,free 函数:释放内存…

【青牛科技】TS223 单触摸键检测IC

概 述 : TS223是 触 摸 键 检 测 IC, 提 供 1个 触 摸 键 。 触 摸 检 测 IC是 为 了用 可 变 面 积 的 键 取 代 传 统 的 按 钮 键 而 设 计 的 。低 功 耗 和 宽 工 作 电压是 触 摸 键 的 DC和 AC特 点 。TS223采 用 SSOP16、 SOT23-6的 封 装 形 式…

CUDA补充笔记

文章目录 一、不同核函数前缀二、指定kernel要执行的线程数量三、线程需要两个内置坐标变量来唯一标识线程四、不是blocksize越大越好,上限一般是1024个blocksize 一、不同核函数前缀 二、指定kernel要执行的线程数量 总共需要线程数是: 1 * N N个线程…

“华为杯”研究生数学建模比赛历年赛题汇总(2004-2024)

文章目录 赛题链接历年赛题2004年赛题2005年赛题2006年赛题2007年赛题2008年赛题2009年赛题2010年赛题2011年赛题2012年赛题2013年赛题2014年赛题2015年赛题2016年赛题2017年赛题2018年赛题2019年赛题2020年赛题2020年赛题2021年赛题2022年赛题2023年赛题2024年赛题 赛题链接 部…

Python学习指南 + 谷歌浏览器如何安装插件

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: Python 目录 前言 Python 官方文档的使用 谷歌浏览器中如何安装插件 前言 在学习Python时,我们可能会出现这样的困惑&#x…

java写一个石头剪刀布小游戏

石头剪刀布是一款经典的手势游戏,通常由两人参与,玩法简单且充满趣味。玩家通过出示手势代表“石头”、“剪刀”或“布”,并根据规则比较手势决定胜负。它广泛用于休闲娱乐、决策或解压活动。 一、功能简介 用户与计算机对战。 用户输入选择:石头、剪刀或布。 计算机随机生…

docker如何安装redis

第一步 如果未指定redis,则安装的是最新版的 docker pull redis 创建一个目录 mkdir /usr/local/docker/redis 然后直接可以下载redis,这是方式确实不怎么好,应该找在官网上找对应的redis配置文件 wget http://download.redis.io/redis-stab…