JavaScript 操作符

JavaScript 操作符/运算符

在 JavaScript 中,有一些操作符可以使代码更简洁、易读和高效。以下是一些常见的操作符:

1、可选链操作符(optional chaining operator)

?.可选链操作符(optional chaining operator)?. 可选链操作符用于访问可能为空或未定义的属性或方法,它允许我们安全地访问嵌套对象的属性,如果中间的属性为空或未定义,则不会抛出错误,而是返回 undefined。例如:

const obj = {
  foo: {
    bar: 123
  }
};

// 普通访问属性的方式
const x = obj.foo.bar; // x = 123

// 使用可选链操作符
const y = obj?.foo?.bar; // y = 123

// 如果对象未定义,则返回 undefined
const z = undefined?.foo?.bar; // z = undefined

2、空值合并操作符(nullish coalescing operator)

??空值合并操作符(nullish coalescing operator)?? 空值合并操作符用于检查一个变量是否为 null 或 undefined,如果是,则返回一个默认值,否则返回该变量的值。与传统的逻辑运算符 || 不同,?? 只会在左侧的值为 null 或 undefined 时返回右侧的默认值,对于其他假值(如空字符串、0、false 等)并不会返回默认值,而是会返回它本身。例如:

const x = undefined ?? 'default'; // x = 'default'

const y = null ?? 'default'; // y = 'default'

const z = 'value' ?? 'default'; // z = 'value'

const a = '' ?? 'default'; // a = ''

const b = '' || 'default'; // b = 'default'

需要注意的是,?? 操作符需要在 ES11 及以上的版本才能使用。

3、箭头函数(Arrow Function)

使用箭头(=>)可以更简洁地定义函数。例如:

const add = (a, b) => a + b;
console.log(add(1, 2)); // 3
const obj = {
  x: 1,
  add(y) {
    return this.x + y;
  },
  double: () => this.x * 2,
};
console.log(obj.add(2)); // 3
console.log(obj.double()); // NaN

注意,箭头函数中的 this 指向的是定义时的上下文,而不是调用时的上下文。

4、模板字面量(Template Literals)

使用反引号(`)可以定义包含变量、表达式和换行符的字符串。例如:

const name = "Alice";
const age = 20;
console.log(`My name is ${name}, and I am ${age} years old.`);
// 'My name is Alice, and I am 20 years old.'

5、展开操作符(Spread Operator)

使用三个点(...)可以将数组或对象展开为一个列表或多个参数。例如:

const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = [...arr1, ...arr2];
console.log(arr3); // [1, 2, 3, 4, 5, 6]

const obj1 = { x: 1, y: 2 };
const obj2 = { z: 3 };
const obj3 = { ...obj1, ...obj2 };
console.log(obj3); // { x: 1, y: 2, z: 3 }

6、短路求值(Short-circuit Evaluation)

使用逻辑运算符&&||可以进行短路求值,简化条件分支的写法。例如:

const obj = { prop: "value" };
const propValue = obj.prop || "default";
console.log(propValue); // 'value'

const arr = [];
const firstValue = arr[0] && arr[0].prop;
console.log(firstValue); // undefined

7、简写的条件语句(Conditional (Ternary) Operator)

使用问号和冒号(?:)可以简化 if-else 语句的写法。例如:

const age = 20;
const message = age >= 18 ? "You are an adult" : "You are not an adult";
console.log(message); // 'You are an adult'

8、简写的自增和自减操作符(Short-circuit Evaluation)

使用双加号(++)和双减号(--)可以简化变量的自增和自减操作。例如:

let count = 0;
count++;
console.log(count); // 1

let num = 5;
const result = --num;
console.log(result); // 4

9、简写的赋值操作符(Assignment Operator)

使用加等号(+=)、减等号(-=)、乘等号(*=)、除等号(/=)等可以简化复合赋值操作。例如:

let count = 0;
count += 1;
console.log(count); // 1

let num = 5;
num *= 2;
console.log(num); // 10

10、双重否定运算符(Double NOT Operator)

双重否定运算符(Double NOT Operator)即为两个连续的叹号("!!"),也称为逻辑非非运算符。它可以将一个值转换为其对应的布尔值。例如:

const x = "hello";
console.log(!!x); // true

const y = 0;
console.log(!!y); // false

需要注意的是,使用!!运算符进行布尔值转换时,要注意避免隐式类型转换带来的副作用,以免导致意外的行为。

11、?: 在 TypeScript 中表示可选属性

在 TypeScript 中,可以使用 ? 表示一个属性是可选的。例如:

interface Person {
  name: string;
  age?: number;
}

const person1: Person = { name: "Alice" };
const person2: Person = { name: "Bob", age: 20 };

在上面的例子中,Person 接口有一个可选属性 age,这意味着可以创建一个 Person 类型的对象,其中 age 属性是可选的。

原文链接:https://www.cnblogs.com/yuzhihui/p/17122071.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript 操作符 - Python技术站

(0)
上一篇 2023年4月19日
下一篇 2023年4月19日

相关文章

  • asp.net treeview checkbox 相关问题

    下面我将详细讲解关于 ASP.NET TreeView 控件中复选框相关问题的完整攻略。 ASP.NET TreeView 控件复选框基础 在 ASP.NET 中,TreeView 控件提供了一种便捷的方式来展示树形结构的数据。而为了在右侧较小的区域中显示更多数据,我们往往采用 TreeView 控件中的复选框来进行多选。一下是一些 ASP.NET Tree…

    JavaScript 2023年6月11日
    00
  • Immer 功能最佳实践示例教程

    当提到Immer时,就不得不提它最常见的用途——用于高效管理和修改JavaScript对象。但是Immer并不是一个普通的库,相反,它是一个提供了便利性和可重用性的JavaScript模块,其目的在于简化代码中的树形复杂性。下面是如何在您的应用程序中使用它的一些最佳实践: 1. 安装Immer 在使用Immer的程序中,您需要首先安装它。您可以在终端中使用以…

    JavaScript 2023年6月11日
    00
  • jquery遍历数组与筛选数组的方法

    下面是关于jQuery遍历和筛选数组的方法的详细讲解: 遍历数组 1. each方法 使用each方法遍历数组很简单,只需要将数组作为each方法的参数,然后在回调函数中操作即可。回调函数中可以接收两个参数:元素的索引和元素本身。以下是一个例子: var arr = [‘apple’, ‘banana’, ‘orange’]; $.each(arr, fun…

    JavaScript 2023年5月27日
    00
  • 解决JSON.stringify()自动将中文转译成unicode的问题

    要解决JSON.stringify()自动将中文转译成Unicode的问题,可以通过使用第三方库 json-bigint 或者自行编写转换函数来实现。 下面分别给出两种方法的使用示例: 使用json-bigint 安装 json-bigint: sh npm install json-bigint 在代码中引入json-bigint: javascript …

    JavaScript 2023年5月19日
    00
  • javascript实现日历控件(年月日关闭按钮)

    实现一个完整的日历控件包括以下几个步骤: 创建HTML结构 在HTML文件中创建一个日历控件的容器,例如: <div id="calendar"> <div class="header"> <span class="prev">&lt;</span&…

    JavaScript 2023年5月27日
    00
  • 浅谈下拉菜单中的Option对象

    下拉菜单是Web界面设计中常用的界面元素之一,Option对象是下拉菜单中的选项对象。要想了解Option对象,需要从以下几个方面来讲解: 1. Option对象的定义 Option对象是HTML下拉列表(select)元素中的一个选项对象,每个选项对象都有以下属性和方法: <option value="option_value" …

    JavaScript 2023年6月10日
    00
  • JavaScript Split()方法

    JavaScript的split()方法用于将字符串分割成字符串数组,返回数组。它可以按照指定的分割符来分割字符串。以下是详细讲解split()方法的攻略: 语法 string.split(separator, limit) 参数:- separator(必须):用于指定分割符的字符串或正则表达式。- limit(可选):一个整数,限定分割后的数组长度。 基…

    JavaScript 2023年5月18日
    00
  • JSON中key动态设置及JSON.parse和JSON.stringify()的区别

    JSON中key动态设置指的是在JavaScript中向JSON对象动态添加属性名(key),这样的JSON对象在另一个需要使用这些属性的函数或者方法中外部作用域仍然可以进行访问。但在正常情况下,我们无法使用字符串拼接的方式来动态设置JSON中的key,这时候就需要借助ES6中的计算属性名(Computed Property Names)来实现。 计算属性名…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部