es6开发:ES6学习笔记

ES6 学习笔记 ES6 引入了许多新特性,如let/const解构表达式箭头函数Promise等,极大地提升了 JavaScript 的开发效率和代码可读性。掌握这些新特性,能够帮助我们编写更加现代化和高效的 JavaScript 代码。 阅读详情

1.let命令

1)let和var的区别:let声明的变量只有所在的代码块有效。

2)没有变量的提升,一定要声明后使用。使用let命令声明变量之前,该变量都是不可用的。形成“暂时性死区”。

3)typeof 不再是一个百分之百安全的操作。

2.块级作用域

1)es5和es6比较:es5 只有全局作用域和函数作用域,没有块级作用域。

2)let实际上为javascript新增了块级作用域

3)es6 允许块级作用域的任意嵌套。

4)es5规定函数只能在顶层作用域和函数作用域之中声明,不能在块级作用域声明,严格模式下会报错。为ES5和es6环境避免报错,应不要在块级作用域里声明函数。

3.const命令

1)const声明一个只读的常量。一旦声明,常量的值就不能改变。const一旦声明变量,就必须立即初始化,不能留到以后赋值。

2)其他特性和let类似

3)对于复合类型的变量,变量名不指向数据,而是指向数据所在的地址。const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变,所以将一个对象声明为常量必须非常小心。

1
2
3
4
5
6
7
8
const foo = {};
foo.prop = 123;
 
foo.prop
// 123
 
foo = {};
//常量foo储存的是一个地址,这个地址指向一个对象。不可变的只是这个地址,即不能把foo指向另一个地址,但对象本身是可变的,所以依然可以为其添加新属性。

ES5只有两种声明变量的方法:var命令和function命令。ES6除了添加let和const命令,后面章节还会提到,另外两种声明变量的方法:import命令和class命令。所以,ES6一共有6种声明变量的方法。

4.顶层对象的属性

顶层对象,在浏览器环境指的是window对象,在Node指的是global对象。 ES6规定,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从ES6开始,全局变量将逐步与顶层对象的属性脱钩。

1
2
3
4
5
6
7
var a = 1;
// 如果在Node的REPL环境,可以写成global.a
// 或者采用通用方法,写成this.a
window.a // 1
 
let b = 1;
window.b // undefined

5.解构赋值

1.数组得解构赋值

1)“模式匹配”为变量赋值;var [a, b, c] = [1, 2, 3];

2) 不完全解构,即等号左边的模式,只匹配一部分的等号右边的数组。

1
2
3
4
let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4

3)解构赋值不仅适用于var命令,也适用于let和const命令,对于Set结构,也可以使用数组的解构赋值。只要某种数据结构具有Iterator接口,都可以采用数组形式的解构赋值。

2.对象的解构赋值

1)对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。

1
2
3
4
5
6
var { bar, foo } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"
 
var { baz } = { foo: "aaa", bar: "bbb" };
baz // undefined

2)变量名与属性名不一致,必须写成下面这样。这实际上说明,对象的解构赋值是下面形式的简写。也就是说,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者。

1
2
3
4
5
6
7
8
9
//对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。<br>var { foo: foo, bar: bar } = { foo: "aaa", bar: "bbb" };
 
var { foo: baz } = { foo: 'aaa', bar: 'bbb' };
baz // "aaa"
 
let obj = { first: 'hello', last: 'world' };
let { first: f, last: l } = obj;
f // 'hello'
l // 'world'

3)和数组一样,解构也可以用于嵌套结构的对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var obj = {
  p: [
    'Hello',
    { y: 'World' }
  ]
};
 
var { p: [x, { y }] } = obj;
x // "Hello"
y // "World"
//这时p是模式,不是变量,因此不会被赋值
var node = {
  loc: {
    start: {
      line: 1,
      column: 5
    }
  }
};
 
var { loc: { start: { line }} } = node;
line // 1
loc  // error: loc is undefined
start // error: start is undefined
 
 
let obj = {};
let arr = [];
 
({ foo: obj.prop, bar: arr[0] } = { foo: 123, bar: true });
 
obj // {prop:123}
arr // [true]

4)数组本质是特殊的对象,因此可以对数组进行对象属性的解构

1
2
3
4
var arr = [1, 2, 3];
var {0 : first, [arr.length - 1] : last} = arr;
first // 1
last // 3

3.字符串的解构赋值

1)字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。

2)类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。

1
2
3
4
5
6
7
8
9
const [a, b, c, d, e] = 'hello';
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"
 
let {length : len} = 'hello';
len // 5

4.数值和布尔值的解构赋值

解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象。由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错。

1
2
3
4
5
6
7
8
let {toString: s} = 123;
s === Number.prototype.toString // true
 
let {toString: s} = true;
s === Boolean.prototype.toString // true
 
let { prop: x } = undefined; // TypeError
let { prop: y } = null; // TypeError

5.变量得解构赋值用途

1)交换变量的值。 

1
[x,y]=[y,x];

2)从函数返回多个值

3)函数参数的定义,解构赋值可以方便地将一组参数与变量名对应起来。

1
2
3
4
5
6
7
// 参数是一组有次序的值
function f([x, y, z]) { ... }
f([1, 2, 3]);
 
// 参数是一组无次序的值
function f({x, y, z}) { ... }
f({z: 3, y: 2, x: 1});

4)提取json数据,解构赋值对提取json对象中的数据,尤其有用。

1
2
3
4
5
6
7
8
9
10
11
12
var jsonData = {
  id: 42,
  status: "OK",
  data: [867, 5309]
};
 
let { id, status, data: number } = jsonData;
 
console.log(id, status, number);
// 42, "OK", [867, 5309]
 
//可以快速提取json中的数据的值。

5)函数参数的默认值

1
2
3
4
5
6
7
8
9
10
11
12
????????????
jQuery.ajax = function (url, {
  async = true,
  beforeSend = function () {},
  cache = true,
  complete = function () {},
  crossDomain = false,
  global = true,
  // ... more config
}) {
  // ... do stuff
};

6)遍历map结构

任何部署了Iterator接口的对象,都可以用for...of循环遍历。Map结构原生支持Iterator接口,配合变量的解构赋值,获取键名和键值就非常方便。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var map = new Map();
map.set('first', 'hello');
map.set('second', 'world');
 
for (let [key, value] of map) {
  console.log(key + " is " + value);
}
// first is hello
// second is world
 
// 获取键名
for (let [key] of map) {
  // ...
}
 
// 获取键值
for (let [,value] of map) {
  // ...
}

7)输入模块的指定方法

加载模块时,往往需要指定输入那些方法。解构赋值使得输入语句非常清晰。

1
const { SourceMapConsumer, SourceNode } = require("source-map");
elasticsearch(ES)简介及安装-----笔记 ES是一款非常强大的开源搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。ES结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域。elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。kibana负责数据可视化,elasticsearch负责存储、计算、搜索数据,logstash\Beats负责数据抓取。elasticsearch底层实现是Lucene计术。 阅读详情

相关推荐

java写一个多人线上聊天室

课程作业谔谔

weixin_51614848的博客 1136

ES6 学习笔记(整理一遍阮一峰大神得入门文档,纯自己理解使用)

1.let命令 1)let和var的区别:let声明的变量只有所在的代码块有效。 2)没有变量的提升,一定要声明后使用。使用let命令声明变量之前,该变量都是不可用的。形成“暂时性死区”。 3)typeof 不再是一个百分之百安全的操作。 2.块级作用域 1)es5和es6比较:es5 只有全局作用域和函数作用域,没有块级作用域。 2)let实际上为javascript新增了块级作用域...

weixin_30651273的博客 239

别再死记硬背MAML原理了!用PyTorch手撸一个Omniglot小样本分类器(附完整代码)

本文详细介绍了如何使用PyTorch实现MAML(模型无关的元学习)算法,构建一个Omniglot小样本分类器。通过实战代码演示,帮助读者理解MAML的双层优化原理,并提供了完整的训练循环、网络架构设计及调试技巧,适合想要掌握元学习技术的开发者。

weixin_29191669的博客 131

ES6解构赋值运算符

本次我领到的任务是: 在ES6中有一个解构赋值运算符,可以大大方便数据字段的获取。 比如 const [a, b] = [1, 2, 3]; const {name, age} = {name: 'helijia', age: 3}; 上面的语句是我们常用的,可是你能解释为什么下面的语句也能正常工作吗? const [a, b] =...

weixin_34194702的博客 516

ADS 使用调整器动态调参教程(Tuning)

ADS动态调参教程

weixin_42845306的博客 1万+

知识图谱本体建模之RDF、RDFS、OWL详解

(一)知识图谱本体建模之RDF、RDFS、OWL详解 1.语义网体系 知识图谱于2012年由Google提出,并不是新概念,而是由语义网络(Semantic Network)衍生而来。语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系。RDF,RDFS与OWL都是基于语义网的知识表示框架,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。RDF,RDFS/OWL 属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。其语义网技术栈如下所示。 2.RD

周周的专栏 1万+

前端知识汇总【ES系列之3解构赋值】

解构赋值

qq_44810886的博客 1688

28_Spring AI 干货笔记之 OpenAI 聊天功能

本文详细介绍了在Spring AI框架中集成OpenAI聊天模型的方法。内容涵盖API密钥配置、通过starter依赖启用自动配置、连接与模型参数的详细设置,并重点说明了运行时选项的动态覆盖机制。文章还深入讲解了多模态处理(图像与音频)、结构化输出、函数调用等高级功能,提供了示例控制器和手动配置指南,并讨论了与OpenAI兼容服务器的适配与推理模型思维链的获取。

在科技的浪潮中,我们寻找着创新的火种,在代码的海洋里,我们编织着智慧的网。腾飞开源,就是这样一个由技术精英汇聚而成的博客平台,我们致力于分享在Java、Python、IoT和人工智能等领域的最新研究成果和实战经验。 在腾飞开源的博客上,你会看到紧跟技术前 1655

1、解构赋值

1. 解构赋值 字符串解构:const [a, b, c, d, e] = “hello” 数值解构:const { toString: s } = 123 布尔值解构:const { toString: b } = true 对象解构 形式:const { x, y } = { x: 1, y: 2 } 默认:const { x, y = 2 } = { x: 1 } 改名:const { x, y: z } = { x: 1, y: 2 } 数组解构 规则:数据结构具有Iterator

y_xiuzhu的博客 433

常用元器件使用方法13:物理层接口芯片DP83848的使用方法

介绍: DP83848是以太网物理层接口芯片,具有多种型号,从便于焊接角度考虑LQFP-48封装较为合适,采用LQFP-48封装的芯片,有2种型号,分别为DP83848I和DP83848C,如下图所示。 其主要区别是使用温度不同,如下图所示。 这2种芯片芯片网上均有销售,按理说DP83848C价格应该更加便宜,实际不然,DP83848I的价格低于DP83848C,考虑或与芯片的出货量...

snmplink的博客 1万+

3.1 5分钟搞定!Claude Code接入国产大模型完整教程(附代码)

摘要 本文提供了一份5分钟快速为Claude Code接入国产大模型的完整教程。首先介绍了系统环境要求(Windows/macOS/Linux、Node.js 18+、Python 3.8+),然后详细说明了三种安装Claude Code的方式(npm/yarn/pnpm)。重点讲解了两种国产大模型接入方案:通义千问(推荐)和文心一言,包括获取API密钥、安装SDK、创建MCP服务器、配置Claude Code等步骤。文中提供了详细的代码示例和配置文件模板,确保开发者能快速完成国产大模型的接入,降低使用成本

yonggeit的博客 7924

ES6 解构赋值

//在ES5 中,大家为了从对象和数组中获取数据,采用这种方式 var obj = { name: ‘张三’, age: 25, sex: ‘男’ } //提取 var name = obj.name; var sex = obj.sex; console.log(name)//张三 console.log(sex)//男 // 而在ES6中,简化了这个过程,将数据结构打散,进而可以从打散后的...

qq_18629557的博客 209

【置顶】TEE从入门到精通-[目录]

此专栏讲解包含不限于optee、商用TEE、常规的安全业务设计。但主要基于optee最新代码,深度讲解和剖析各项原理和机制...

baron-周贺贺-代码改变世界ctw 6423

VUE学习笔记:19.模块化开发之webpack处理ES6语法

1.使用webpack处理ES6语法 我们在开发过程中,经常会使用ES6语法来编写js文件。但是一些浏览器并不支持ES6语法的js语句。所以我们需要使用webpack在打包js文件时将ES6语法转化为ES5语法。 (1)前期准备 第一步:安装loader及依赖的npm包 安装babel-loader npm install babel-loader@7.1.5 --save-dev 安装babel-core npm install babel-core@6.26.3 --save-dev 安装

ouyicnm的博客 960

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ElasticSearch 认识和安装ES

es是一个分布式、高性能的搜索引擎,广泛应用于大数据检索、日志分析、实时搜索等场景。与传统数据库相比,ElasticSearch 对于大规模数据的处理具有显著优势,特别是模糊查询、分词分析、语义理解等复杂搜索任务。本章内容主要是介绍了 Elasticsearch 的基础知识、它的起源以及如何安装和配置 Elasticsearch 和 Kibana。安装过程中使用 Docker 是一种方便快捷的方式,可以轻松启动单机模式的 Elasticsearch 服务,并结合 Kibana 进行可视化操作。

2301_80093566的博客 1843

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ES6(一)ES6的开发环境搭建(es6转码为es5)

Babel使用规则 Babel是一个广泛使用的转码器,可以将ES6代码转为ES5代码,从而在现有环境执行。 这意味着,你可以现在就用 ES6 编写程序,而不用担心现有环境是否支持。下面是一个例子。 // 转码前 input.map(item => item + 1); // 转码后 input.map(function (item) { return item + 1; }); //上面的原始代码用了箭头函数,这个特性还没有得到广泛支持,Babel将其转为普通函数,就能在现有的JavaScrip

weixin_44959855的博客 5617

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

分布式搜索引擎ES-elasticsearch入门

正排索引:相当于文档中的一条条记录;例子:汉语值得学习;汉语是语言;汉语学习视频;倒排索引:起源于实际应用中需要根据属性的值来查询记录。这种索引表的每一项都包括一个属性值和包含该属性值得各个记录地址。由于不是根据记录来确定属性,而是根据属性来确定记录的位置。可以记录文档的ids,词频跟位置例子:汉语值得学习;汉语是语言;汉语学习视频;单词文档ids词频TF;位置POS汉1,2,3语1,2,3值得11:1:<3>学习1,3是21:1;<3>言2。

TOMORROW6COME的博客 2051

ElasticSearch全文搜索引擎

Lucene是apache下的一个开源的全文检索引擎工具包(一堆jar包)。它为软件开发人员提供一个简单易用的工具包(类库),以方便的在小型目标系统中实现全文检索的功能。Lucene适用于中小型项目 ,ES适用于中大型项目(它底层是基于lucene实现的)虽然全文搜索领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene只是一个库。

2201_75971147的博客 3233

Elasticsearch 搜索引擎开发实战

内容简介 本书结合 Elasticsearch 在工程中的实际应用,详细介绍了使用 Elasticsearch 开发支持中文和英文搜索引擎的相关技术,从而实现系统监控。 本书共分为8章,内容涵盖了 Elasticsearch 搜索引擎开发的环境安装与配置;实现一个简单的网站搜索;开发中文搜索引擎;Mapping 详解;源代码分析;提高搜索相关性;使用 Spring Boot 开发搜索界面;使用 E...

GitChat 8136

Elasticsearch搜索引擎

Elasticsearch简称ES,是一个开源的实时分布式搜索和分析引擎。它具有快速、可扩展、强大的全文搜索功能,可以用于存储、搜索和分析大规模的数据。ES可以处理大量的数据并提供实时的搜索结果,适用于各种应用场景,包括日志分析、全文搜索、数据可视化等。它使用分布式架构来实现高可用性和容错性,并提供简单的RESTful API和丰富的查询语法来进行数据的索引和搜索。

qq_63161848的博客 2750

Java集成Easy-Es实现ElasticSearch(ES)的数据搜索引擎操作?看这一篇就够了!保姆级别逐步教学!

集成前三问: 一、这个`ElasticSearch`是什么? >通俗来讲ElasticSearch是一个用于大量数据分析的搜索引擎,但是我个人觉得他更应该叫搜索服务器。因为他不仅仅是一个搜索工具,同时将数据会保存到本地的ElasticSearch存储内。

欢迎来到快乐星球 2009

【ElasticSearch】深入了解 ElasticSearch:开源搜索引擎的力量

在信息时代,数据的增长速度之快让我们迅速感受到了信息爆炸的挑战。在这个背景下,搜索引擎成为了我们处理海量数据的得力工具之一。而 ElasticSearch 作为一款强大的开源搜索引擎,不仅能够高效地存储和检索数据,还在日志分析、实时监控等领域展现了其卓越的性能。正向索引是基于文档 id 创建索引,适用于小规模数据和简单查询场景。倒排索引通过分析文档内容,记录词条信息,适用于大规模数据和复杂查询场景,提高了查询效率。ElasticSearch 的强大之处在于其面向文档的存储和全文搜索功能。

qq_61635026的博客 2439

Elasticsearch:如何创建搜索引擎

将搜索引擎视为图书管理员,帮助你找到所需的信息。你告诉他们你要解决的问题或你要回答的问题,图书管理员可以向你推荐最有可能对你有帮助的书籍和资源。他们可能并不总是能做对,但这比盲目地翻阅书籍以期获得幸运要有效得多。网络服务器数据摄取索引和结果页面。在构建搜索引擎之前,了解它们各自的作用非常重要。构建搜索引擎的第一步是确定搜索引擎要解决的问题。这个决定将影响你要构建的所有其他内容,从数据源到索引,再到显示结果的方式。他们为什么要寻找这些信息/内容?你需要了解哪些信息才能确定某件事是否相关?

Elastic 中国社区官方博客 2045

分布式搜索引擎Elasticsearch(一)

是一款非常强大的开源的分布式的搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK),换句话说 ELK 就是以 Elasticsearch 为核心的技术栈,包括了 kibana、Logsash、Beats。

菜鸟的博客 3216
上一篇: vue源码分析:渲染篇
下一篇: ionic在mac上的环境搭建与模拟测试
Generon
博客等级 码龄11年 135粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值