常用的一些正則表達式
?????????單字符
????????????????????^:表示正則的開頭規則要求(^e)
????????????????????$:表示正則的結尾的規則要求(e$)
????????????????????+:至少出現一個前面一樣的字符(+一個字符)
????????????????????*:至少匹配0個或者多個字符(*A)
?????????????????????:只能出現0-1次(?e)
????????????????????.:匹配任何一種字符(.e)
????????????????????\:轉義,把在正則中有特殊含義的字符轉義(\.)
????????組合字符:
????????????????????\d:匹配任意一個數字0-9(\d)
????????????????????\D:匹配任意一個非數(\D)
????????????????????\w:匹配數字,字母,下劃線(\w)
????????????????????\W:匹配除了下劃線意外的特殊字符(\W)
????????????????????\s:表示空的字符(匹配空格字符);
正則修飾符:
????i:忽略大小寫。var reg=/ /i;
????g:全局匹配
構造函數方式創建正則:
var reg=new RegExp("正則表達式",“修飾符”);
????var reg=new RegExp("wW","i");
正則的一些方法:
1reg.test();檢驗一個字符串是否符合某一個正則規范,如果符合返回true,否則返回false
??????????用法:reg.test(str);
2reg.exec();根據正則表達式查找,結果返回一個長度為1的數組 (數組只有一個值)
??????????用法:reg.exec(str);
3str.search( ) ;根據正則匹配查詢,如果在字符里面有匹配的字符,返回所在的下標,如果沒有返回-1。
????????用法:str.search(reg);
4str.match( );根據正則匹配查詢,把正則所匹配的所有字符,以數組的形式返回
????????用法:str.match(reg)
5str.replace( );根據正則匹配,替換正則所匹配的字符
????????用法:str.replace(正則表達式要替換的新字符串) 如果想實現全局替換,在正則表達式上加一個修飾符
? ? ? ? str.replace(reg,"替換的內容")
1.嚴格模式:
? ? “ use strict”
????????嚴格模式常見的要求:
???????????定義變量必須要有var
???????????嚴格模式下,八進制被禁用
???????????嚴格模式下,函數必需聲明在程序的最頂端
??????????arguments與形參不同
??????????eval()解析在嚴格模式下有自己的作用域,不被外部訪問
2.let關鍵字??
let 聲明變量
let 不允許重復聲明變量
let 必須在某個{}內部使用
let 在函數體內部 聲明的變量沒有變量提升; 暫時性死區:通過let聲明的變量 變量聲明之前該變量不可用,這種現象就稱作暫時性死區
let????塊級作用域案例:點擊某個li,獲取li在頁面的下標
? ? 3.this指向的改變
???????????(1) this 的指向:
????????????????this指向直接綁定它的對象。(調用它的對象)
????????????????函數
???????????????例子:?????btn.onclick=function(){
????????????????console.log(this);
}
????????????函數的創建就會產生一個this
????????(2)改變this的指向
????????????????????bind(this):可以改變匿名函數內部的this指向;
????????????????????call(this):函數調用時可以改變this指向;
????????????????????apply(this):函數調用時可以改變this指向;
????????箭頭函數沒有this,箭頭函數中的this繼承父級而來。(本身是沒有this的,它的this要看它的執行環境)
????????箭頭函數無法通過bind( ),call( ),apply( )改變this的指向
4.for of:
????????for(var item of arr){
????????//item 遍歷得到的item是數組的每一個元素
}
????????for...of 與for...in的區別
????????????a. for in遍歷數組的得到的是數組的下標,并且下標是字符串
????????????????for in???主要用于遍歷對象
????????????b. for??of??不能遍歷對象
????????????????for of?????遍歷數組得到的是數組的第一個元素
????????????c.for of 可以用來遍歷map集合
??????????????for in不能遍歷map集合
5.const關鍵字(定義常量的關鍵字)
???常量:不會變化的量;(以固定值的形式存在)
????常量定義后不能在使用的過程中發生改變,如果改變,程序報錯
????const PI = 3.14159;
????PI = 3.14;//報錯
????常量名一般用大寫表示,與變量區別開來????????
6.字符串模板
`dfadsfasdf${}adsf `;${}里面 可以解析變量,也可以解析函數
7.箭頭函數
關鍵字函數???function box(){};
??箭頭函數????var box =()=>{};
(所有的匿名函數都都可以寫成箭頭函數,所有的綁定事件后面的匿名函數都可以寫成箭頭喊數,所有的方法的回調函數都可以寫成匿名函數,那也就可以寫成箭頭函數,總結凡是匿名函數都可以寫成箭頭函數)
箭頭函數與匿名函數的區別?
8.箭頭函數中的this(很重要)
????????箭頭函數沒有this,箭頭函數中的this繼承父級而來。(本身是沒有this的,它的this要看它的執行環境)
????????箭頭函數無法通過bind( ),call( ),apply( )改變this的指向
9.解構賦值
?????解構賦值數組的用法:
????????var [a,b,b]=[1,2,3,4,5,67]
????????console.log(a,b,c)==1,2,3;
????解構賦值在對象中的用法:
????var {a,b}={a:23,b:54};
????????console.log(a,b)=23,54;
????var {name,age}={name:"jom",age=23};
????????????consolo.log(name,age)==jom 23;
????結構賦值的交換
????????????var [num1,num2]=[num2,num1];
????作用:
????????????1,一次性可以多個變量
????????????2,可以快速的獲取對象中對應屬性的值,并且無視屬性屬性;
????????????3,可以輕松實現兩個數的交換
????????????4,在函數中的使用,可以一次性返回多個結果
????????????5,可以作用在函數的傳參上,以對象的方式傳遞,可以無視參數的順序,形參與實參的健名要保持一致
10.Array.from();
?? ??? ?? ? var arr=[ ];
?? ??? ?? ? 偽數組:argunments,通過document.getElementsByTagName("li")
?? ??? ?? ? 把偽數組轉換成真正的數組
?? ??? ?? ? 把屬性含有length
11.set集合
var set=new Set([數據] );以數組的方式保存數據(主要用來保存數據。不限制類型,會自動去重,不會自動換數據類型);一般不保存對象
????set集合保存數據的方法:
????????var set =new??Set();
? ? ? ? //添加值到集合中
????????set.add(3,12).add(53),add(name:"tom");
????????console.log(set);
????set.szie( );查看集合數據的個數
????set.has("");查找一個值在集合里面是否存在,如果不存在返回false,存在返回true;
????set.delete(??);刪除集合里的一個指定的值
????set.clear(??);清空所有的set值
//遍歷一個set集合
? ? set。forEach (function(item,index)){
?? ?? ? console.log( item,index)
}