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.pswp.cn/news/250993.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250993.shtml
英文地址,請注明出處:http://en.pswp.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…