当前位置: 首页 > news >正文

谈谈语法糖

Js中的语法糖是什么

语法糖(syntax suger): 是指语言中一些为了让代码更简洁 易懂, 而对原本较复杂的语法进行的"改进". 它本质上没有改变语言的能力, 仅仅只是让编写代码的方式变得更方便, 直观(看到代码量锐减, 心里甜甜的-->suger)

Js中有哪些"著名"语法糖

在js中

  1. 箭头函数(arrow functions) 箭头函数是一个简化版的匿名函数, 语法更简洁. 还绑定了词法作用域中的this, 这使得它在回调函数中使用this更加直观. 谈谈箭头函数的this指向

    传统函数中
     ```jsconst add = function(a, b){return a + b;}```
    
    箭头函数中
       const add = (a, b)=> a + b;
    
  2. 模版字符串 和 展开运算符

  • 字符串:string,js中的基本的数据类型,使用双引号、单引号、反引号去引用都属于字符串。

  • 反引号引用的字符串是ES6中提供的,称为模板字符串。在模板字符串中,可以使用${} 嵌入js的表达式(有结果)

    let name = "张三"
    let age = 20         
    console.log("name="+name+",age="+age)
    console.log(`name=${name},age=${age}`)
    
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
    </head><body><script>/*在ES6中的提供的展开(扩展)运算符: ...它的目的主要是快速的处理字符串、数组和对象展开运算符:得到字符串、数组、对象中的数据(用于拆分数组或对象, 或者将多个元素合并到一个数组或对象中)*/// 获取字符串中的字符let s = "abcde"console.log(s.charAt(0));console.log("a", "b", "c", "d", "e");console.log(...s);// 相当于将字符串中的数据展开(取出)之后,放到数组中let s2 = [...s];// 展开数组let arr = [1, 2, 3]let arr2 = [4, 5, 6]let arr3 = arr.concat(arr2)console.log(arr);console.log(arr2);console.log(arr3);let arr4 = [...arr, ...arr2]console.log(arr4);// 展开对象let obj = {name: "张三",age: 20,sex: '男'}console.log(obj);// 需要将obj这个对象复制一份(备份)复制给obj2let obj2 = obj;obj.name = "李四"console.log(obj);console.log(obj2);// 取出obj对象的所有属性,再次封装成一个新对象(js对象的浅拷贝)let obj3 = { ...obj };console.log(obj3);obj3.name = '王五'console.log(obj3);console.log(obj2);// 对象的拷贝复制问题:深拷贝、浅拷贝// 浅拷贝:只拷贝对象的第一层数据let user = {name: "张三",age: 20,sex: '男',company: {name: "dr",address: "天津东丽"}}console.log(user);// 使用展开运算符,可以完成对象的浅拷贝(是拷贝对象的第一层数据)let user2 = { ...user };console.log(user2);user2.name = "李四";user2.company.name = "dr教育"console.log(user2);console.log(user);// 演示对象的深拷贝let strUser = JSON.stringify(user)console.log(strUser);// 再将字符串转成JS对象let user3 = JSON.parse(strUser);console.log(user3);user.age = 30user.company.name = 'dr国际教育'console.log(user3);console.log(user);</script>
    </body></html>
    
  1. 对象简洁语法: 在定义对象时 对象的键名变量名相同 可以省略键名

    传统对象定义:
    const name = 'Alice';
    const age = 25;
    const person = {name: name,age: age
    };
    
    对象简洁语法:
    const name = 'Alice';
    const age = 25;
    const person = { name, age };
    
  2. 解构赋值: 让从数组或对象中提取值变得更加简洁

    对象解构:
    const person = { name: 'Alice', age: 25};
    const { name, age } = person;//name = 'Alice', age = 25
    
    数组解构:
    const arr = [1, 2, 3];
    const [a, b] = arr;// a = 1, b =2
    
  3. 默认参数: 如果函数没有传递参数, 可以给参数设置默认值

    function greet(name = 'Guest'){console.log(`Hello, ${name}`)
    }greet();// Hello, Guest
    greet('Alice');// Hello, Alice
    

在vue3中

  • 组合式API是一种语法糖

    它通过setup函数让我们能够更加清晰和灵活的组织和管理组件的逻辑
    相比Vue2中的选项式API, setup将各种组件的逻辑(如数据 方法 生命周期钩子等跟着逻辑进行)集中管理,避免了代码的分散
http://www.wxhsa.cn/company.asp?id=6134

相关文章:

  • 2025年,秋天与冬天(长期)
  • ssl rsa解密
  • linux系统编程05-标准IO1
  • linux系统编程07-文件IO\系统调用IO
  • linux系统编程06-标准IO2
  • linux系统编程08-高级IO
  • 第03周 预习、实验与作业:面向对象入门2与类的识别
  • 第8篇、Kafka 监控与调优实战指南
  • linux系统编程02-进程基本知识
  • linux系统编程03-并发:信号
  • linux系统编程04-并发:线程
  • 新手高效制作PPT的3个步骤:告别逻辑混乱,从构思到完成!
  • Avalonia:用 ReactiveUI 的方法绑定数据、事件和命令
  • 【pyQT 专栏】程序设置 windows 任务栏缩略图(.ico)教程
  • Say 题选记(9.14 - 9.20)
  • vm的配置
  • 力扣72题 编辑距离
  • 数学基本结构框架
  • 2025.9.16总结
  • 在 Tailscale 中禁用 DNS
  • 软件工程实践一:Git 使用教程(含分支与 Gitee)
  • 【青少年低空飞行玩意】设计图以及项目概况
  • C++ 多态
  • Python实现对比两个Excel表某个范围的内容并提取出差异
  • 我用AI给自己做了一整套专属表情包!攻略
  • 20250916 之所思 - 人生如梦
  • Vue3项目开发专题精讲【左扬精讲】—— 在线教育网站系统(基于 Vue3+TypeScript+Vite 的在线教育网站系统系统设计与实现)
  • 20250915
  • Python Socket网络编程(4)
  • 今日学习 dos命令和Java基础语法