当前位置: 首页 > 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.zskr.cn/news/6382.html

相关文章:

  • 2025年,秋天与冬天(长期)
  • ssl rsa解密
  • linux系统编程05-标准IO1
  • linux系统编程04-并发:线程
  • 新手高效制作PPT的3个步骤:告别逻辑混乱,从构思到完成!
  • 【pyQT 专栏】程序设置 windows 任务栏缩略图(.ico)教程
  • C++ 多态
  • Python Socket网络编程(4)
  • switch中初始化变量
  • C语言结构体中的内存对齐
  • 文件的读取操作
  • 【汇总】Qt常用模块头文件
  • 【IEEE出版、EI检索稳定】第四届云计算、大数据应用与软件工程国际学术会议(CBASE 2025)
  • 97. 交错字符串
  • VRRP实验
  • 25/9/16
  • 25/9/14(补)
  • VSCode + Python 开发踩坑:虚拟环境不在项目根目录导致包无法识别该怎么办
  • 图像与视频编码
  • Python爬虫实战:研究Pandas,构建地理信息资料采集和分析便捷的系统
  • fg/bg/jobs/kill命令--linux
  • 【征文启动】IvorySQL PostgreSQL 迁移实战经验征集:分享你的技术沉淀,赢取专属好礼!
  • ios电脑系统和windows系统
  • lc1029-两地调度
  • Java的运算符
  • HTML打包EXE工具中的WebView2内核更新指南
  • EXE一机一码打包加密大师 - 打包加壳原理
  • 动态修改线程池参数
  • 什么是网络+HTTP详解
  • 黑白世界