ES6-14 Unicode表示法、字符串方法、模板字符串

Unicode表示法

  • 本身能正常识别的,加{}也能识别,花括号内的内容表示码点
parseInt('0061',16) // 十进制的97,97在ASCII码中对应a
console.log('\u0061') // a
console.log('\u{0061}') // a
console.log('\u{61}') // a

在这里插入图片描述

原型上方法

codePointAt(十进制)

  • 字符串的长度是字符的长度,需要4个字节表示的字符,长度为2
  • charCodeAt返回的也是码点
  • 凡是超过oxffff的,用codePointAt更方便
console.log('\u{1f42a}'.length) // 2 🐪
// 该字符需要4个字节表示,分开打印时,每个都是乱码
console.log('\u{1f42a}'.charAt(0)) // �
console.log('\u{1f42a}'.charAt(1)) // �
  • 注意:和charCodeAt一样
'🐪'.codePointAt(0) // 128042
'🐪'.charCodeAt(0) // 55357
'🐪'.charCodeAt(1) // 56362
(55357).toString('16') // "d83d"
(56362).toString('16') // "dc2a"
(128042).toString('16') // "1f42a"
console.log('\u{d83d}\u{dc2a}' === '\u{1f42a}') // true
'🐪7'.codePointAt(0) // 128042
'🐪7'.codePointAt(1) // 56362 注意:和charCodeAt一样
'🐪7'.codePointAt(2) // 55 7的ASCII码
'🐪7'.length // 3
'语文'.length // 2
'yw'.length // 2

有迭代器接口

  • 迭代器的底层和length不同,能正确识别字符
  • 对于4字节字符,for循环遍历出来的是乱码,for…of能正确识别
    在这里插入图片描述
    在这里插入图片描述

includes/startsWith/endsWith

'Hello World'.startsWith('h') // false
'Hello World'.startsWith('H') // true
'Hello World'.endsWith('d') // true
'Hello World'.includes('d') // true

repeat

  • 返回字符串,将原本的字符串重复n次,入参是重复次数
  • 会对入参隐式转换,数字只取整数位
'X'.repeat(3) // "XXX"
'X'.repeat(2.9) // "XX"
'X'.repeat(NaN) // ""
'X'.repeat(null) // "";、7
'X'.repeat(undefined) // ""
'X'.repeat(false) // ""
'X'.repeat('') // ""

padStart(len,str)/padEnd

  • 填充指定字符str后,长度为len
'ps'.padStart('0', 6) // "ps"
'ps!'.padStart(7, 'o') // "oooops!"
'ps!'.padStart(0, 'o') // "ps!"
'ps!'.padStart(-1, 'o') // "ps!"
'ps!'.padStart(5.5, 'o') // "oops!" 最后还是5位

判断是否4字节

  • 十六进制和十进制可以直接比较大小
const str = '🐪12'
function  is32Bit(str) {return str.codePointAt(0) > 0xffff
}
console.log(is32Bit(str)) // true
console.log(is32Bit('名')) // false

构造器上方法

  • ES5不能正确识别4字节字符(fromCharCode),会舍弃最高位
    在这里插入图片描述
  • 传入的码点可以是任意进制
String.fromCharCode('128042') // ""
String.fromCodePoint('128042') // "🐪"
String.fromCodePoint('0x1f42a') // "🐪"
String.fromCharCode('0x1f42a') === String.fromCharCode('0xf42a') // true

模板字符串 ``

  • 模板内放表达式可以做算数运算、函数执行、数组,(调用toString)
  • 在模板内使用未声明的变量依然会报错
  • ${}内使用字符串(有点多此一举)
function test() {return [1, 2, 3]
}
console.log(`${test()}`) // 1,2,3
console.log(`hello ${'world'}`) // hello world
const data = [{ lastName: '黄', firstName: '药师' },{ lastName: '张', firstName: '无忌' },{ lastName: '周', firstName: '伯通' },
]
const temp = data => `<table>${data.map(item => `<tr><td>${item.lastName + item.firstName}</td></tr>`).join('')}</table>
`
document.getElementById('app').innerHTML = temp(data)

在这里插入图片描述

  • 如何注入脚本
    <div id="app"></div><script>(function () {const data = [{ lastName: "<script>console.log(123)<\/script>" },];const temp = data => `${data.map(item => `${item.lastName}`).join('')}        `;document.getElementById('app').innerHTML = temp(data);})();</script>

标签模板

  • 变量作为分隔点(split)
  • 防止恶意输入 脚本注入
test`hello ${1 + 2} world ${3 * 4}` // 这么写就是函数调用了
function test($, $1, $2) {console.log($, $1, $2)
}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对 js 高程 Preflighted Reqeusts 的理解

看JS高程遇到 Preflighted Reqeusts不大理解&#xff0c;遂百度下&#xff1a;转自&#xff1a;http://todoit.me/ajax-preflight/最近在做一个 VUE 的项目的时候, 和后端的小伙伴对接口, 想方便开发, 于是要求后端的小伙伴在所有的接口都加上跨域的许可 (Access-Control-Allow…

算法 --- 删除数组中重复项

解题思路: 如果输入的数组长度为1,则返回该数组否则(len>2),使用i记录当前待插入的位置,j记录下一个与nums[i]不相等的位置,leng为待返回数组的长度当nums[i] ! nums[j]时,把j位置的值nums[j]放在i1位置.同时i,j /*** param {number[]} nums* return {number}*/ var remov…

如何理解 Linux 中的 load averages

原文&#xff1a;https://mp.weixin.qq.com/s?src11&timestamp1533697106&ver1047&signaturepoqrJFfcNABv4biKKpa4mZdIW7No2Wo1F5sbZL7ggoVS2GqcSqwQQ8hMulAmezT*zL*klB-eE5BeMyNuyjuIH7YgkBAN25i6*ahhEpWyxqx6vPct-Vr7q7AU0YGe-F*l&new1 http://blog.scoutap…

Jsp+Servlet+MYSQL注册登录案例(界面难看,ε=(´ο`*)))唉)

注册登录界面尤为常见&#xff0c;我的界面尤为难看&#xff0c;勉为其难的写吧&#xff0c;前端不熟就是这样。。。 这个案例运用到了: 1.Jsp动态页面--->动态页面 2.Servlet逻辑判断后台---->实现界面与数据库/业务的连接&#xff0c;简而言之&#xff0c;起承转合。PS…

ES6-15 map与set

Promise、Proxy、Map、Set这些ES6新增的api无法用babel实现语法降级&#xff0c;需要使用到polyfill Set 成员是唯一的&#xff0c;不能重复有iterator接口&#xff0c;可迭代具有iterator接口的所有类型&#xff0c;都能作为new Set()的参数&#xff0c;如类数组、数组 con…

jquery --- DOM操作、表单元素的初始化

1.获取ul里第2个li节点: var $li_two $("ul li:eq(1)"); // 获取该节点的内容 var $li_two_txt $li_two.text();2.获取p元素节点的title属性: var $para $("p"); var p_title $para.attr("title");3.创建2个li节点,并添加道ul中: var $li…

Jquery中post与get之间的区别详细介绍

1:GET访问浏览器认为是等幂的 GET访问浏览器认为是等幂的&#xff0c;就是一个相同的URL只有一个结果&#xff0c;相同是指整个URL字符串完全匹配。所以&#xff0c;第二次访问的时候&#xff0c;如果URL字符串没变化 浏览器是直接拿出了第一次访问的结果&#xff1b; POST则认…

LeetCode 424. Longest Repeating Character Replacement

原题链接在这里&#xff1a;https://leetcode.com/problems/longest-repeating-character-replacement/description/ 题目&#xff1a; Given a string that consists of only uppercase English letters, you can replace any letter in the string with another letter at mo…

ES6-16 WeakMap与WeakSet、proxy与reflect

WeakMap/WeakSet 原型上不存在遍历方法(没有部署iterator接口)成员只能是对象垃圾回收机制不考虑对成员对象的应用 WeakSet/WeakMap 中的对象都是弱引用&#xff0c;即垃圾回收机制不考虑 WeakSet 对该对象的引用&#xff0c;也就是说&#xff0c;如果其他对象都不再引用该对象…

jquery--- 属性和样式的操作 设置和获取HTML、文本和值、焦点事件

1.获取p元素的title属性: var title $("p").attr("title");2.给p元素加title属性(值为:栗子)和date属性(值为:2019/7/15): $("p").attr("title":"栗子", "date":"2019/7/15");3.删除p中的title属性:…

day9

前方高能---初识函数 一. 什么是函数 函数:对代码块和功能的封装和定义. 二. 函数的定义,函数名,函数体,以及函数的调用 def 函数名(): 函数体 函数体:就是函数被执行之后要执行的代码. 三, 函数的返回 执行完函数之后,我们可以使用return来返回结果. 函数中return的使用: 1.函…

MySQL 数据库索引

数据库索引在数据库中、索引使数据库程序无须对整个表进行全表扫描就可以在其中找到所需的数据&#xff1b;数据库中的索引是某个表中一列或者若干列值的集合、以及物理标识这些值的数据页的逻辑指针清单&#xff1b;MySQL 索引的增删查SQL 语句效率的分析索引的作用&#xff1…

ES6-17 class与对象

class 模拟类的方式语法糖&#xff08;把以前的写法换了一个方式&#xff09; 类内部的方法是不可枚举的 ES5用Object.assign拓展的原型属性是可枚举的 function Point(x, y) {this.x x;this.y y; } // 这样定义的原型上方法eat\drink是可枚举的 Point.prototype Object…

8.8 正睿暑期集训营 Day5

目录 2018.8.8 正睿暑期集训营 Day5总结A 友谊巨轮(线段树 动态开点)B 璀璨光滑C 构解巨树考试代码ABC2018.8.8 正睿暑期集训营 Day5时间&#xff1a;3.5h(实际)期望得分&#xff1a;602020实际得分&#xff1a;202020 比赛链接这里也有一些 总结 线段树&#xff01;&#xff0…

算法 --- 二叉树的最大深度

思路: 1.二叉树的深度,等于Max(左子树最大深度,右子树最大深度) 1 2.节点不存在时,此时的深度为0 3.当节点存在,左右子树不存在时(此时为叶子节点) 返回1 /*** Definition for a binary tree node.* function TreeNode(val) {* this.val val;* this.left this.righ…

ES6-18/19 异步的开端-promise

ES6-18异步的开端-promise ES6-19 promise的使用方法和自定义promisify try catch只能捕获同步异常&#xff0c;不能捕获异步的 等待所有异步都执行完&#xff0c;打印结果&#xff0c;比较笨拙的方法&#xff0c;在每个异步操作加arr.length 3 && show(arr) Promis…

leetcode35 C++ 4ms 搜索插入位置

class Solution { public:int searchInsert(vector<int>& nums, int target) {for(int i 0;i<nums.size();i){if(nums[i] > target){return i;}}return nums.size()-1;} }; 转载于:https://www.cnblogs.com/theodoric008/p/9449049.html

OpenCV-Python 中文教程(搬运)目录

OpenCV-Python 中文教程 OpenCV官方教程中文版&#xff08;For Python&#xff09; OpenCV2-Python-Tutorials 段力辉 译 说明&#xff1a;搬运自linux公社pdf文件&#xff0c;粗略搬运&#xff0c;仅作个人笔记参考&#xff0c;有时间再美化 部分文件参考&#xff1a; https:/…

算法 --- 平衡二叉树

解题思路: 1.首先写一个返回深度的函数d 2.写一个遍历函数t 3.在t中首先判断,r是否为空(为空则此时就是平衡二叉树,返回true),然后判断是否为叶子节点(r.left null && r.right null)若是则返回true,最后判断,其左子树的深度与右子树的深度之差是否大于1.若是则返回fal…

【co】ES6-20/21 iterator与generator

ES6-20 iterator与generator ES6-21 async与await、ES6的模块化 try catch不能捕获异步异常 try catch是同步代码 try {setTimeout(() > {console.log(a)}) } catch (e) {console.log(e) }iterator 内部迭代器&#xff1a;系统定义好的迭代器接口&#xff08;如数组Symbol…