发布于 2026-01-05 0 阅读
0

ES6 入门示例

ES6 入门示例

本文将介绍 ES6 的一些新特性。
如果您是 ES6 新手或正在学习前端框架,本文将对您有所帮助。

本文将涵盖以下主题

  1. 令且常数
  2. 箭头函数
  3. 默认参数
  4. 循环
  5. 传播属性
  6. 地图
  7. 静态方法
  8. 获取者和设置者

let 与 var 类似,但 let 有作用域。let 只能在其定义的代码块级别访问。

if (true) {
 let a = 40;
 console.log(a); //40
}
console.log(a); // undefined
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,变量'a'是在If语句内部定义的,因此在函数外部无法访问。

另一个例子:

let a = 50;
let b = 100;
if (true) {
 let a = 60;
 var c = 10;
 console.log(a/c); // 6
 console.log(b/c); // 10
}
console.log(c); // 10
console.log(a); // 50
Enter fullscreen mode Exit fullscreen mode

康斯特

const 用于给变量赋一个常量值。这个值不能更改,它是固定的。

const a = 50;
a = 60; // shows error. You cannot change the value of const.
const b = "Constant variable";
b = "Assigning new value"; // shows error.
Consider another example.
const LANGUAGES = ['Js', 'Ruby', 'Python', 'Go'];
LANGUAGES = "Javascript"; // shows error. 
LANGUAGES.push('Java'); // Works fine.
console.log(LANGUAGES); // ['Js', 'Ruby', 'Python', 'Go', 'Java']
Enter fullscreen mode Exit fullscreen mode

这可能有点令人困惑。

这样想就明白了。每当你定义一个常量变量时​​,JavaScript 都会将变量的值指向其对应的内存地址。在我们的例子中,变量“LANGUAGES”实际上指向的是分配给数组的内存地址。因此,你无法在之后修改该变量,使其指向其他内存位置。在整个程序运行过程中,它始终指向该数组。

箭头函数

ES6中的函数有一些变化。我是指语法。

// Old Syntax
function oldOne() {
 console.log("Hello World..!");
}
// New Syntax
var newOne = () => {
 console.log("Hello World..!");
}
Enter fullscreen mode Exit fullscreen mode

新的语法可能有点令人困惑。但我会尽量解释清楚。
语法分为两部分。

  1. var newOne = ()
  2. => {}

第一部分只是声明一个变量并将函数(即())赋值给它。它只是表明该变量实际上是一个函数。

第二部分是声明函数的主体部分。带花括号的箭头部分定义了函数的主体部分。

另一个带参数的例子。

let NewOneWithParameters = (a, b) => {
 console.log(a+b); // 30
}
NewOneWithParameters(10, 20);
Enter fullscreen mode Exit fullscreen mode

我觉得没必要解释,这很简单。

默认参数:

如果您熟悉其他编程语言,例如 Ruby、Python,那么默认参数对您来说并不陌生。

默认参数是在声明函数时默认指定的参数。但调用函数时可以更改其值。

例子

let Func = (a, b = 10) => {
 return a + b; 
}
Func(20); // 20 + 10 = 30
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,我们只传递了一个参数。该函数使用默认参数并执行该函数。

再举一个例子:

Func(20, 50); // 20 + 50 = 70
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,该函数接受两个参数,第二个参数替换了默认参数。

再举一个例子:

let NotWorkingFunction = (a = 10, b) => {
 return a + b;
}
NotWorkingFunction(20); // NAN. Not gonna work.
Enter fullscreen mode Exit fullscreen mode

调用函数时,如果使用参数,参数会按顺序赋值。(例如)第一个值赋给第一个参数,第二个值赋给第二个参数,依此类推。

在上面的例子中,参数'a'被赋值为20,而'b'没有赋值。因此,我们得不到任何输出。

但,

NotWorkingFunction(20, 30); // 50;
Enter fullscreen mode Exit fullscreen mode

运行正常。

循环

for...of 与 for..in 非常相似,只是略有不同。

for...of 遍历元素列表(即类似数组),并逐个返回元素(而不是它们的索引)。

let arr = [2,3,4,1];
for (let value of arr) {
 console.log(value);
}
Output:
2
3
4
1
Enter fullscreen mode Exit fullscreen mode

请注意,变量“value”输出的是数组中的每个元素,而不是索引。

另一个例子

let string = "Javascript";
for (let char of string) {
 console.log(char);
}
Output:
J
a
v
a
s
c
r
i
p
t
Enter fullscreen mode Exit fullscreen mode

是的,它也适用于字符串。

传播属性

展开属性顾名思义,用于展开表达式。简单来说,它可以将元素列表转换为数组,反之亦然。

不包含散点图属性的示例:

let SumElements = (arr) => {
 console.log(arr); // [10, 20, 40, 60, 90]
 let sum = 0;
 for (let element of arr) {
  sum += element;
 }
 console.log(sum); // 220. 
}
SumElements([10, 20, 40, 60, 90]); 
Enter fullscreen mode Exit fullscreen mode

上面的例子很简单。我们声明了一个函数,它接受一个数组作为参数,并返回数组的总和。就这么简单。

现在考虑使用散点图属性的相同示例

let SumElements = (...arr) => {
 console.log(arr); // [10, 20, 40, 60, 90]
let sum = 0;
 for (let element of arr) {
  sum += element;
 }
 console.log(sum); // 220. 
}
SumElements(10, 20, 40, 60, 90); // Note we are not passing array here. Instead we are passing the elements as arguments. 
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,spread 属性将元素列表(即参数)转换为数组。

另一个例子:

Math.max(10, 20, 60, 100, 50, 200); // returns 200.
Enter fullscreen mode Exit fullscreen mode

Math.max 是一个简单的函数,它返回给定列表中的最大元素。它不接受数组作为参数。

let arr = [10, 20, 60];
Math.max(arr); // Shows error. Doesn't accept an array.
Enter fullscreen mode Exit fullscreen mode

所以,让我们求助于我们的救世主吧。

let arr = [10, 20, 60];
Math.max(...arr); // 60 
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,spread 属性将数组转换为元素列表。

地图

Map 存储键值对。它类似于数组,但我们可以自定义索引。而且 Map 中的索引是唯一的。

例子:

var NewMap = new Map();
NewMap.set('name', 'John'); 
NewMap.set('id', 2345796);
NewMap.set('interest', ['js', 'ruby', 'python']);
NewMap.get('name'); // John
NewMap.get('id'); // 2345796
NewMap.get('interest'); // ['js', 'ruby', 'python']
Enter fullscreen mode Exit fullscreen mode

我认为上面的例子已经很清楚了。

Map 的其他有趣特性包括所有索引都是唯一的,而且我们可以使用任何值作为键或值。

例子:

var map = new Map();
map.set('name', 'John');
map.set('name', 'Andy');
map.set(1, 'number one');
map.set(NaN, 'No value');
map.get('name'); // Andy. Note John is replaced by Andy.
map.get(1); // number one
map.get(NaN); // No value
Other useful methods used in Map:
var map = new Map();
map.set('name', 'John');
map.set('id', 10);
map.size; // 2. Returns the size of the map.
map.keys(); // outputs only the keys. 
map.values(); // outputs only the values.
for (let key of map.keys()) {
 console.log(key);
}
Output:
name
id
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,`map.keys()` 返回的是映射的键,但它返回的是一个迭代器对象。这意味着它不能直接显示,只能通过迭代来显示。

另一个例子:

var map = new Map();
for (let element of map) {
 console.log(element);
}
Output:
['name', 'John']
['id', 10]
Enter fullscreen mode Exit fullscreen mode

上面的例子不言自明。for...of 循环会将键值对输出到数组中。

我们可以稍微优化一下。

var map = new Map();
for (let [key, value] of map) {
 console.log(key+" - "+value);
}
Output:
name - John
id - 10
Enter fullscreen mode Exit fullscreen mode

集合用于存储任何类型的唯一值。就这么简单!

例子

var sets = new Set();
sets.add('a');
sets.add('b');
sets.add('a'); // We are adding duplicate value.
for (let element of sets) {
 console.log(element);
}
Output:
a
b
Enter fullscreen mode Exit fullscreen mode

请注意,不会显示重复值,只会显示唯一值。
另请注意,集合是可迭代对象,我们需要遍历其中的元素才能显示它。

其他有效方法:

var sets = New Set([1,5,6,8,9]);
sets.size; // returns 5. Size of the size.
sets.has(1); // returns true. 
sets.has(10); // returns false.
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,size 的含义不言自明。还有一个方法 'has',它会根据给定元素是否存在于集合中返回一个布尔值。

静态方法

大多数人应该都听说过静态方法。静态方法是在 ES6 中引入的,定义和使用都非常简单。

例子:

class Example {
 static Callme() {
 console.log("Static method");
 }
}
Example.Callme();
Output:
Static method
Enter fullscreen mode Exit fullscreen mode

请注意,我在 Class 类中没有使用关键字“function”。

而且我可以在不创建类的任何实例的情况下调用该函数。

获取者和设置者

Getter 和 setter 是 ES6 中引入的实用特性之一。如果您在 JS 中使用类,它们会非常有用。

不带getter和setter的示例:

class People {
constructor(name) {
      this.name = name;
    }
    getName() {
      return this.name;
    }
    setName(name) {
      this.name = name;
    }
}
let person = new People("Jon Snow");
console.log(person.getName());
person.setName("Dany");
console.log(person.getName());
Output:
Jon Snow
Dany
Enter fullscreen mode Exit fullscreen mode

我认为上面的例子已经很清楚了。People 类中有两个函数,分别用于设置和获取人的姓名。

使用 getter 和 setter 的示例

class People {
constructor(name) {
      this.name = name;
    }
    get Name() {
      return this.name;
    }
    set Name(name) {
      this.name = name;
    }
}
let person = new People("Jon Snow");
console.log(person.Name);
person.Name = "Dany";
console.log(person.Name);
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,你可以看到 People 类中有两个函数,分别带有 'get' 和 'set' 属性。'get' 属性用于获取变量的值,而 'set' 属性用于设置变量的值。

你可以看到,getName 函数调用时没有使用括号。setName 函数调用时也没有使用括号,它就像是给变量赋值一样。

感谢您的阅读。希望您喜欢这篇文章。:) :)

文章来源:https://dev.to/srebalaji/es6-for-beginners-with-example-c7