JavaScript 操作符

这篇具有很好参考价值的文章主要介绍了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) => {
//   return a + b;
// };

// 上述方式简写为:
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'

使用逻辑运行符&&||简化 if-else 语句的写法。例如:

const err = undefined;

if (err) {
  console.error(err);
}
// 上述语句可简写为:
err && console.error(err);

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.toymoban.com/news/detail-418275.html

到了这里,关于JavaScript 操作符的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • c++类与对象(二)——赋值运算符重载与取地址操作符重载

    前言: 本章将通过 日期类 的实现,深入学习 运算符重载 的实现方法。本章将完成6个默认成员函数中剩余3个—— 赋值运算符重载 与 取地址操作符重载 的学习。 C++ 为了增强代码的可读性引入了 运算符重载 ,运算符重载是具有 特殊函数名 的函数,也具有其返回值类型,

    2024年02月03日
    浏览(35)
  • C++ operator关键字的使用(重载运算符、仿函数、类型转换操作符)

    C++ operator的使用(重载运算符、仿函数、类型转换操作符) C++11实用技术(一)auto与decltype的使用 C++11实用技术(二)std::function和bind绑定器 C++11实用技术(三)std::future、std::promise、std::packaged_task、async C++11 中,operator 是一个,用于重载运算符。通过重载运算符

    2024年02月14日
    浏览(36)
  • [C++] 类与对象(中)类中六个默认成员函数(2)-- 运算符重载 -- 取地址及const取地址操作符重载

      本篇我们以日期类来展开讲。对于一个日期,我们如何去比大小呢?对年月日依次进行比较可以,但是可以直接比较吗? 我们可以看到,对于自定义类型的日期类直接去比较两个日期的大小是错误的,因此我们需要对运算符赋予特殊的功能,去实现可以对自定义类型的比较

    2024年02月13日
    浏览(36)
  • 【JavaScript】JavaScript 运算符 ④ ( 逻辑运算符 | 逻辑与运算符 && | 逻辑或运算符 || | 逻辑非运算符 ! )

    JavaScript 中的 逻辑运算符 的作用是 对 布尔值 进行运算 , 运算完成 后 的 返回值 也是 布尔值 ; 逻辑运算符 的 使用场景 : 条件控制语句 , 控制程序分支 ; 循环控制语句 , 控制程序循环 ; 逻辑 运算符 列举 : : 逻辑与运算 , 两个操作数都为 true , 最终结果才为 true , 只要有一个操

    2024年03月20日
    浏览(41)
  • 【JavaScript】JavaScript 运算符 ⑤ ( 赋值运算符 | 基础赋值运算符 与 复合赋值运算符 )

    JavaScript 赋值运算符种类 : 基础赋值运算符 : 等于 : = ; 复合赋值运算符 : 加等 : += 减等 : -= 乘等 : *= 除等 : /= 取模等 : %= 有符号左移等 : = 有符号右移等 : = 无符号左移等 : = 无符号右移等 : = 在 JavaScript 语言中 , \\\" 赋值运算符 \\\" 的 作用是 为 变量 分配值 ; 最基础的 \\\" 赋值运算

    2024年03月25日
    浏览(45)
  • 前端JS实用操作符,一些骚操作✨

             目录 0、!!  双重逻辑非操作符  📚 1、?? 操作符 空值合并/空判断  ✅ 2、?. 可选链运算符🔍 3、??= 操作符 逻辑空值赋值运算符 💚 4、三元运算符 📗 5、~~ 操作符 双位运算符 🔨 6、与 ||或 短路运算符 🚂 7、| 0 取整 🚁 8、 1 判断奇偶数 🎨 9、_ 数值分割

    2024年02月14日
    浏览(34)
  • VHDL的运算操作符

    在VHDL语言中共有4类操作符,可以分别进行 逻辑运算(logical)、关系运算(relational)、算术运算(Arithmetic)和并置运算(Concatenation) 。需要注意的是,被操作符所操作的对象是操作数,且操作数的类型应该和操作符所要求的类型相一致。另外,运算操作符是有优先级的,

    2024年02月06日
    浏览(30)
  • SQL中的一些操作符

            SQL         操作符 DDL    数据定义   database,create,alter,drop    create后面要加database,table,view,index;+ 名字 DML   数局查询    select           数局更新    insert,update,delete DCL    数局控制        grant,revoke table : create table T1( uID int(11)

    2024年02月02日
    浏览(24)
  • JavaScript中一元运算符、三元运算符、循环

    前置自增: 后置自增: 区别 1.单独使用前置和后置没有区别。 2.前置自增:先自加再使用(记忆口诀:++在前,先加) 1.while循环 2.for循环 3.while循环和for循环区别 4.for循环嵌套 1.while循环 2.for循环 1.for循环执行代码 *作用:重复执行代码 *好处:把声明起始值、循环条件、变

    2024年02月04日
    浏览(36)
  • JavaScript 操作符

    在 JavaScript 中,有一些操作符可以使代码更简洁、易读和高效。以下是一些常见的操作符: ?. 是 可选链操作符(optional chaining operator) 。 ?. 可选链操作符 用于访问可能为空或未定义的属性或方法,它允许我们安全地访问嵌套对象的属性,如果中间的属性为空或未定义,则不

    2023年04月19日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包