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

ECMAScript 6 入门 学习 日志笔记 2024/8/6 13:59

 就读书籍:

ECMAScript 6 入门

作者:阮一峰icon-default.png?t=N7T8https://www.ruanyifeng.com/

 个人理解笔记

 

{ } 块级   函数不能先用后声明   Let   优先函数表达 

不可重复声明同一变量

let=function (){  } 

}

不谈其他,只要在{ } 中即可 ,简单暴力理解

const  和 let 类似  ,指向对象 ,

简单理解:指向房子 可以加家具 不能换房

 // 冻结对象 Object.freeze(obj);               把房子(obj)门关上
constantize(obj) 把房子里的所有门都关上 null 不注明会报错 还要检测是不是门
Object.keys(obj)        返回房子内部的物件名字
obj[   Object.keys(obj) ]        通过名字找到具体物品  

 函数的作用是确保一个对象及其所有嵌套的对象都被冻结,从而实现深层的不可变性。

变量声明方法

六种: let var import class const function

顶层变量:  var  function

浏览器里面,顶层对象是window, Node 和 Web Worker 无 window

浏览器和 Web Worker 里面,self指向顶层对象, Node 无self

Node 里面,顶层对象是global,其他环境不支持。  

 CSP 内容安全策略 evalnew Function  方法可能无法使用

解构赋值: 用于数组 [ ] and 对象 { } 键必须相同 键类似索引

写法: 模式匹配  两边模式相同 

                不是可遍历的结构  let [a,b,c] =1 错误

       实用技巧

 将现有对象的方法,赋值到某个变量。

VS好用的一个插件:A-super-comprehensive

 

古怪赋值方式 ( )内部包裹{ } 解构  语法合法 ( ) 防止 { } 被默认为块

({} = [true, false]);
({} = 'abc');
({} = []);

 解构赋值的规则是,只要等号右边的值不是对象或数组,就先将其转为对象。

解构用途

//用途一 交换值

let x=1,y=2;

[x,y]=[y,x];

console.log(x,y);

//用途二 函数返回多个值

function f(){

    return [1,2];

}

console.log(f());

let [a,b]=f(); //解构赋值

console.log(a,b);

//对象的解构赋值

function f1(){

    return {

        name:"网络",

        ago:25

    }

}

let {name,ago}=f1();//解构赋值

console.log(name,ago);

let {log}=console;//函数的解构赋值

//用途三 函数参数定义

//有序

function  f2([h,v,n]){log(`Received: h=${h}, v=${v}, n=${n}`);}

f2([1,2,3]);

//无序

function f3({n,v,h}){log(`Received: h=${h}, v=${v}, n=${n}`);}

f3({h:1,n:2,v:3});

//提取json数据

let jsonData={

    id:1,

    namea:"网络",

    age:25

}

let {id,namea,age}=jsonData;

log(`id=${id},name=${name},age=${age}`);

运行结果: 

旧方法提取 JSON 

const jsonString = '{"name": "John", "age": 30, "city": "New York"}';

const jsonObject = JSON.parse(jsonString);

// 访问对象属性

console.log(jsonObject.name);

// 输出:

John console.log(jsonObject['age']);

// 输出: 30

console.log(jsonObject.city);

 

 用解构

const jsonString = '{"name": "John", "age": 30, "city": "New York"}';// JSON字符串

let {name,John,age,city}= JSON.parse(jsonString);// 解析JSON字符串

console.log(name,John,age,city);// 打印结果

const 也是可以的

const jsonString = '{"name": "John", "age": 30, "city": "New York"}';// JSON字符串

const {name,John,age,city}= JSON.parse(jsonString);// 解析JSON字符串

console.log(name,John,age,city);// 打印结果

 

 用法五  函数参数的默认值

// 定义一个简化版的 jQuery.ajax 方法
jQuery.ajax = function (url, {// 默认配置项async = true,          // 是否异步,默认为 truebeforeSend = function () {},  // 发送请求前的回调函数,默认为空函数cache = true,          // 是否启用缓存,默认为 truecomplete = function () {},  // 请求完成后的回调函数,默认为空函数crossDomain = false,   // 是否允许跨域,默认为 falseglobal = true,         // 是否触发全局 AJAX 事件,默认为 true// ... 更多配置项} = {}) {// ... 执行具体的 AJAX 请求逻辑};

用法六 遍历 Map 结构

  1. Map 对象:

    • Map 是一种内置的 JavaScript 对象,它实现了键值对的集合,类似于对象,但键可以是任意类型的值(不仅仅是字符串或符号)。
    • Map 保证了键值对的插入顺序会被记住,这与普通的 JavaScript 对象不同,在普通对象中键值对的顺序是不确定的。
    • Map 提供了一些方法,如 setgethasdelete, 和 clear 用于操作键值对。

方法七输入模块的指定方法

ES6 对字符的 Unicode 表示法做出了改进,只要将码点放入大括号,就能正确解读该字符。

遍历器for.... of  遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点。

JSON 不允许直接包含正则表达式。

 JSON 格式允许字符串里面直接使用 U+2028(行分隔符)和 U+2029(段分隔符)。这样一来,服务器输出的 JSON 被JSON.parse解析,就有可能直接报错。

  • 字符串 json 包含了两个特殊字符 \u2028 和 \u2029,分别代表行分隔符和段落分隔符。
  • 这些字符在 JSON 格式中是无效的,会导致解析错误。
  • 实验失败没有报错QAQ

 

JSON.stringify()的行为。

遇到0xD8000xDFFF之间的单个码点,

或者不存在的配对形式,

它会返回转义字符串,留给应用自己决定下一步的处理。

 

 解构函数,别名的应用

 trim方法去掉首尾空格

 模板字符串(template string)

插入值`${ }`

模板嵌套

模板编译:这个好复杂,表示看不太懂

类似于 EJS (Embedded JavaScript) 的模板引擎语法

 编译: 看不太懂 直接用ejs了

ejs基本语法理解和运用 - 不会代码的前端 - 博客园  

标签模板 tagged template

  1. 重要应用,就是过滤 HTML 字符串,防止用户输入恶意内容。

  2. 就是多语言转换(国际化处理)

调用函数处理字符串?

休息了,今天就到这里 2024/8/6 20:09  

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Transformer】关于RNN以及transformer的相关介绍
  • uniapp3.0实现图片上传公用组件上传uni-file-picker,uni.uploadFile
  • Mac电脑装不了软件怎么办 苹果电脑软件安装失败解决办法 安装macos空间不足
  • 【开源社区】Elasticsearch(ES)中空值字段 null_value 及通过exists查找非空文档
  • 【MySQL】全面剖析索引失效、回表查询与索引下推
  • 【开端】web系统中返回状态码组织管理
  • 回顾Python
  • 在树莓派上安装udhcpd的步骤
  • 2024年TI杯E题-三子棋游戏装置方案分享-jdk123团队-第三弹视觉模块的封装
  • 打造核心竞争力:中集集团技术创新之路
  • 【MetaGPT系列】【MetaGPT完全实践宝典——多智能体实践(辩论赛)构建】
  • 十九、虚拟机VMware Workstation(CentOSDebian)的安装
  • 前端项目中的Server-sent Events(SSE)项目实践及其与websocket的区别
  • PDF怎么在线转Word?介绍四种转换方案
  • MATLAB(R和C++)大肠杆菌合成生物机械数学模型
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • js数组之filter
  • leetcode讲解--894. All Possible Full Binary Trees
  • SpiderData 2019年2月25日 DApp数据排行榜
  • SQLServer插入数据
  • vue-loader 源码解析系列之 selector
  • 当SetTimeout遇到了字符串
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 浮动相关
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 跨域
  • 探索 JS 中的模块化
  • 线上 python http server profile 实践
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • Java性能优化之JVM GC(垃圾回收机制)
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 数据库巡检项
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • #Ubuntu(修改root信息)
  • $ git push -u origin master 推送到远程库出错
  • (3)选择元素——(17)练习(Exercises)
  • (6)设计一个TimeMap
  • (C++哈希表01)
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (七)Java对象在Hibernate持久化层的状态
  • (三)模仿学习-Action数据的模仿
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (自用)仿写程序
  • .NET Core 成都线下面基会拉开序幕
  • .Net Redis的秒杀Dome和异步执行
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 使窗口永不获得焦点
  • .Net7 环境安装配置
  • .NET命令行(CLI)常用命令